我使用Entity Framework 5.0,我在后端数据库中将Status
列的默认值设置为1。但是在插入新记录时,它会默认为status
列生成0。我希望1
为默认值,在数据库中设置,但实体框架将其更改为0.
答案 0 :(得分:0)
您必须打开edmx
文件并从相应的实体中选择Status
属性。然后按F4
以显示Property-View
。在那里,您必须为Identity
选择StoreGeneratedPattern
。 Itentity
表示数据库在INSERT
上生成值,但不在UPDATE
上生成。
答案 1 :(得分:0)
如果要通过Entity Framework以外的方式插入记录,或者如果要在已包含记录的表上创建新的非空列,则在数据库中设置缺省值非常有用。 在Code First中,您可以在迁移中指定数据库默认值:
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;
}