在实体框架数据库优先方法中将默认值 1 设置为实体名称(状态)
本文关键字:实体 设置 状态 数据库 框架 方法 默认值 | 更新日期: 2023-09-27 18:36:15
我正在使用实体框架 5.0,我在后端数据库中将Status
列的默认值设置为 1。但在插入新记录时,默认情况下它会为status
列生成 0。我希望1
数据库中设置的默认值,但实体框架将其更改为 0。
您必须打开edmx
文件并从相应的实体中选择 Status
属性。然后按 F4
显示Property-View
。在那里,您必须为StoreGeneratedPattern
选择Identity
。 Itentity
表示数据库在 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;
}