【问题标题】:Entity Framework POCO default constructor实体框架 POCO 默认构造函数
【发布时间】:2011-08-25 12:37:16
【问题描述】:

是否可以使用设置一些默认值的默认构造函数,例如:

public class BetScreenshot
{
   ...

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

我的第一个不好的感觉是这些属性可能在 EF 实体实例化期间被标记为已修改。但是可能还有别的吗?

【问题讨论】:

  • 这不符合POCO entity的条件,你需要一个无参数的构造函数。此外,由于属性声明不可见(如果要启用更改跟踪,它们需要为 virtual),因此无法判断您是否启用了更改跟踪。
  • @casperOne 构造函数在我看来是无参数的......?
  • @Mike:查看edit history 与发表评论的时间有关。

标签: .net entity-framework


【解决方案1】:

是的,可以初始化属性。在使用无参数构造函数的构造过程中,该类型的字段无论如何都会被初始化为默认值。您只是选择了不同的默认值。这是一个漂亮的common practice 来新建子实体和集合,但没有理由不能初始化简单的属性。我为几个实体执行此操作,EF 正确地将对象识别为新的/未修改的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 2012-10-18
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多