2011-08-25 17 views
7

Czy mogę mieć konstruktora domyślnego, który określa pewne domyślne wartości jak:Entity Framework POCO domyślny konstruktor

public class BetScreenshot 
{ 
    ... 

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

Moje pierwsze złe wrażenie, że właściwości te mogą być oznaczone jako zmodyfikowane podczas EF podmiotów instancji. Ale może być coś jeszcze?

+0

To nie kwalifikuje się jako [podmiot POCO] (http://msdn.microsoft.com/en-us/library/dd468057.aspx), trzeba mieć konstruktora bez parametrów. Ponadto nie można stwierdzić, czy włączasz śledzenie zmian, ponieważ deklaracje właściwości nie są widoczne (muszą być "wirtualne", jeśli chcesz włączyć śledzenie zmian). – casperOne

+0

@casperOne Konstruktor wygląda dla mnie bez parametrów ...? – Mike

+0

@Mike: Spójrz na [edytuj historię] (http://stackoverflow.com/revisions/7190472/3) w odniesieniu do czasu, kiedy komentarz został wprowadzony. – casperOne

Odpowiedz

7

Tak, można inicjować właściwości. Efektywnie podczas konstruowania przy użyciu konstruktora bez parametrów, pola typu i tak są inicjowane do wartości domyślnych. Po prostu wybierasz inną wartość domyślną. To całkiem niezła common practice do nowych jednostek podrzędnych i kolekcji, ale nie ma powodu, dla którego nie można zainicjować prostych właściwości. Robię to dla kilku jednostek, a EF poprawnie rozpoznaje obiekt jako nowy/niezmodyfikowany.

Powiązane problemy