2011-08-25 75 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正确地将该对象识别为新/未修改。