2012-05-03 108 views
3

我在我的數據庫中有52列的表,我想編寫一個函數在該表中創建一行。
在我的情況下,我不想使用該表中的所有列,所以我創建了這樣的模型。如何在實體框架中設置默認值

[Table("CUST_MASTER")] 
public class CustomerMaster 
{ 
    [Key] 
    [Column("CUSTOMER_ID")] 
    public string Id { get; set; } 

    [Column("CUSTOMER_NAME")] 
    public string Name { get; set; } 

    [Column("CUSTOMER_CITY")] 
    public string City { get; set; } 
} 

有沒有辦法通過實體框架只發送這些數據,並將其他所有不能爲空領域的一些默認數據(字符串「」,對於小數0.0,等等),而不寫在字段我所有的模型和手動做?

回答

4

當你沒有在模型中,那麼它不會被映射包含一個表列,它會被所有生成的SQL被完全忽略。

所以,唯一的選擇是指定數據庫的默認值。

+0

嗯:(這將是非常有用的一個類似的東西在實體框架感謝 –

+0

@ChuckNorris:。EF不知道這些列那麼應該如何填補他們創建存儲過程,如果你不想地圖?那些列和使用存儲過程來插入你的數據 –

+0

我已經考慮過解決存儲過程的問題了,我會繼續這樣做,謝謝你的幫助:) –

0

如果設置在構造函數中的值,你將有你的代碼的默認值,但你可以考慮讓移民代替,這樣你可以設置默認值。看this stackoverflow question

+0

這一個需要再次填充我的模型。我不只是寫了一個地方,爲nvarchar不可空字段設置空字符串,而不提及這些字段。 –

0

我認爲這是old suggestion你想要什麼。它明確提到概念模型和存儲模型之間缺乏映射。雖然不是一個非常流行/理解的想法。

更新: FWIW,this表明它已經可以在非Code-First場景中使用。