设置“默认值或绑定”实体框架代码优先

时间:2012-03-04 11:58:27

标签: entity-framework sql-server-2012

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

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

SQL 2012 sequence

如何通过实体框架4.3代码优先完成?

2 个答案:

答案 0 :(得分:2)

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

您可以在此投票以获取新功能: http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/2541076-allow-using-sql-server-2012-sequence-for-generatin

据我所知,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

}

答案 1 :(得分:0)

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

public override void Up()
{
    AlterColumn("dbo.table_name", "FieldName", c => c.Guid(defaultValueSql: "YOU_SQL_FUNCTION_HERE", nullable: false));
}