我可以在EntityFramework中使用私有设置器创建poco类吗

Ciz*_*hil 5 c# entity-framework domain-model

试图实现的目标是创建一个如下所示的类。

public class Purse
{
    public decimal AvaliableBalance { get; protected set; }        
    public decimal PendingBalance { get; protected set; }
    public decimal TotalBalance { get; protected set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想知道实体框架是否能够填充此类。如果是这样,怎么办?

基本上,要完成的工作是在代码端直接限制对这些属性的写操作,但是我希望Entity Framework能够写这些属性。我想通过一个唯一的目的是通过写一个方法来公开这些属性的设置方法值(即:经过一些处理后)。

Nic*_*pat 5

您的方法将起作用。我已经大量使用了这种模式。实体框架使用反射将您的数据具体化为对象。由于即使您的成员是私人的,反射也可以很愉快地工作,因此该模式效果很好。

  • 这个答案大致上是正确的,但您也可以使用私有属性-请参阅http://www.dotnetjalps.com/2015/04/entity-framework-private-setters-constructors.html。如果适当配置,反射可以允许访问私有属性,这是有道理的。也可以使构造函数具有在代码中使用的参数,而仅使用私有参数的构造函数(实体框架需要无参数的构造函数)仅用于实体框架。 (2认同)