我需要首先在 EF 代码中设置 sql server 列“默认值或绑定”OnModelCreating(或作为属性属性)。原因是我想使用 sql 2012 序列而不是自动生成的标识。
要在 sql 2012 中使用序列,我需要实现这一点:
如何使用实体框架 4.3 Code first 做到这一点?
我需要首先在 EF 代码中设置 sql server 列“默认值或绑定”OnModelCreating(或作为属性属性)。原因是我想使用 sql 2012 序列而不是自动生成的标识。
要在 sql 2012 中使用序列,我需要实现这一点:
如何使用实体框架 4.3 Code first 做到这一点?
我认为实体框架 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
}
我知道这是一个老问题,但可能有助于在 EF 6 中寻找此答案的人。您可以使用迁移来完成此操作:
public override void Up()
{
AlterColumn("dbo.table_name", "FieldName", c => c.Guid(defaultValueSql: "YOU_SQL_FUNCTION_HERE", nullable: false));
}