在实体框架数据库优先方法中将默认值 1 设置为实体名称(状态)

本文关键字:实体 设置 状态 数据库 框架 方法 默认值 | 更新日期: 2023-09-27 18:36:15

我正在使用实体框架 5.0,我在后端数据库中将Status列的默认值设置为 1。但在插入新记录时,默认情况下它会为status列生成 0。我希望1数据库中设置的默认值,但实体框架将其更改为 0。

在实体框架数据库优先方法中将默认值 1 设置为实体名称(状态)

您必须打开edmx文件并从相应的实体中选择 Status 属性。然后按 F4 显示Property-View。在那里,您必须为StoreGeneratedPattern选择IdentityItentity 表示数据库在 INSERT 上生成值,但不在UPDATE上生成值。

如果要以实体框架以外的方式插入记录,或者在已包含记录的表上创建新的非 null 列,则在数据库中设置默认值非常有用。在代码优先中,可以在迁移中指定数据库默认值:

public override void Up()
{    
   AddColumn("dbo.Foos", "Status", c => c.Integer(nullable: false, defaultValue: 1));
}

默认情况下,C# 将整数设置为零,这就是实体框架覆盖数据库的原因。

因此,如果实体类

不是该类型的默认值,则还必须在实体类中设置默认值:

//partial is only necessary in Database First
public partial class Foo
{
   private int _Status = 1;
   public int Status
   {
      get{ return _Status; }
      set{ _Status = value; }
   }
}

。或者,如果您更喜欢构造函数初始化:

public partial class Foo
{
   public Foo()
   {
      Status = 1;
   }
   public int Status { get; set; }
}

。并且,如果您使用的是 C# 6.0:

public partial class Foo
{
   public int Status { get; set; } = 1;
}