2011-08-25 50 views
7

是否還好有默認構造函數設置像一些默認值:實體框架POCO的默認構造函數

public class BetScreenshot 
{ 
    ... 

    public BetScreenshot() 
    { 
     CreationDateTime = DateTime.UtcNow; 
     StatusEnum = BetScreenshotStatus.NotProcessed; 
    } 
} 

我的第一感覺不好的是,EF實體實例期間修改了這些屬性可能被標記。但可能還有別的東西?

+0

這不符合[POCO實體](http://msdn.microsoft.com/en-us/library/dd468057.aspx),您需要有一個無參數的構造函數。此外,由於屬性聲明不可見,因此無法確定是否啓用更改跟蹤(如果要啓用更改跟蹤,則它們需要爲「虛擬」)。 – casperOne

+0

@casperOne構造函數對我來說看起來沒有參數...? – Mike

+0

@Mike:查看[編輯歷史](http://stackoverflow.com/revisions/7190472/3)與何時發表評論有關。 – casperOne

回答

7

是的,可以初始化屬性。無論如何,在使用無參數構造函數的構造過程中,有效地將類型的字段初始化爲默認值。你只是選擇一個不同的默認值。這是一個漂亮的common practice新增子實體和集合,但沒有理由簡單的屬性無法初始化。我爲幾個實體執行此操作,並且EF正確地將該對象識別爲新/未修改。