2016-02-26 71 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

相關問題