2

我需要首先在 EF 代码中设置 sql server 列“默认值或绑定”OnModelCreating(或作为属性属性)。原因是我想使用 sql 2012 序列而不是自动生成的标识。

要在 sql 2012 中使用序列,我需要实现这一点:

SQL 2012 序列

如何使用实体框架 4.3 Code first 做到这一点?

4

2 回答 2

2

我认为实体框架 CodeFirst 尚不支持此功能,因此只能在 XML 映射 (EDMX) 的帮助下设置默认值。

您可以在这里为新功能投票: http: //data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/2541076-allow-using-sql-server-2012-生成序列

据我所知,FluentAPI 使您能够使用DatabaseGeneratedOption http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.databasegeneratedoption(v=vs.103).aspx

protected override void OnModelCreating(DbModelBuilder modelBuilder)  
{
   modelBuilder.Entity<YourEntity>().Property(p => p.YourColumn)  
          .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) //None,Identity,Computed

}
于 2012-03-04T13:02:34.510 回答
0

我知道这是一个老问题,但可能有助于在 EF 6 中寻找此答案的人。您可以使用迁移来完成此操作:

public override void Up()
{
    AlterColumn("dbo.table_name", "FieldName", c => c.Guid(defaultValueSql: "YOU_SQL_FUNCTION_HERE", nullable: false));
}
于 2019-02-27T15:13:59.283 回答