2016-02-26 75 views

回答

0

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

+0

{“修改与 '身份' 模式的列不支持的。列:'状态'。表:'lamiModel.Store.finish'。“} 这就是当我尝试上传一个storedGenaratedPattern = Identity时出现异常。你的技巧不起作用 – Akash

+0

我认为该列是只读的,并且由数据库只有 –

+0

其惰性1,但是当它更新为0,所以我得到异常 – Akash

0

如果以通过Entity Framework以外的方式插入记录,或者如果要在已包含记录的表上创建新的非空列,则在数据库中设置默认值非常有用。 在代码首先,你可以在一个指定迁移的数据库默认:

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; 
} 
+0

如果我必须写7到10行代码只是为了设置默认值为什么我不应该只插入obj.Status = 1;即服务目的 – Akash

+0

为了使它成为默认值,你应该将该行放在构造函数中。构造函数初始化与后台字段初始化完全取决于你。我的IDE中的重构工具使创建后备字段非常简单 – Colin

相关问题