在EntityFramework中,我能否创建一个带有私有setter的poco类?

5
我尝试实现的目标是创建如下所示的类。
public class Purse
{
    public decimal AvaliableBalance { get; protected set; }        
    public decimal PendingBalance { get; protected set; }
    public decimal TotalBalance { get; protected set; }
}

但是我想知道实体框架是否能够填充这个类。如果可以,应该如何操作?

基本上,我想要的是在代码端限制直接写入这些属性,但是我希望实体框架能够写入这些属性。我希望通过一个方法公开这些属性的setter,该方法的唯一目的是为其编写值(当然,在某些处理之后)。

1个回答

5

你的做法可行。我也经常使用这种方式。Entity Framework使用反射将数据转换为对象。由于反射可以正常运行,即使成员是私有的,所以这种模式非常有效。


我现在明白了,所以这是反射。谢谢。 - Cizaphil
2
这个答案在广义上是正确的,但你也可以使用私有属性-请参见http://www.dotnetjalps.com/2015/04/entity-framework-private-setters-constructors.html。如果适当配置,反射可以访问私有属性,这是有意义的。在代码中可以使用带参数的构造函数,也可以有一个私有无参数构造函数(Entity Framework需要一个无参数构造函数),专门用于Entity Framework。 - pwdst
http://thedatafarm.com/data-access/entity-framework-private-constructors-and-private-setters/ 这篇文章也很相关。 - pwdst
使用EF6或更高版本(早期版本不确定),您也可以使用私有设置器。请参考此答案https://dev59.com/TF8d5IYBdhLWcg3weyM0 - CShark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接