【问题标题】:Adding behavior to EF Entity classes向 EF 实体类添加行为
【发布时间】:2012-07-12 08:47:41
【问题描述】:
要定义实体框架可序列化的类(EF Code First),我们需要使用公共虚拟属性作为数据持有者,稍后将用作数据库中的列。这使开发人员失去了从构造函数初始化实体实例的能力。我希望我的实体不仅是数据“桶”,而且还具有行为,例如新对象的构造函数实例化,以及对象内数据操作的方法。
我想我可以拥有的方法,但是我应该怎么做才能克服构造函数的限制?我应该引入将逐个实例化实体属性并使用它的包装类吗?
【问题讨论】:
标签:
c#
.net
entity-framework
【解决方案1】:
您可以“随心所欲”地使用方法,也可以使用不会在数据库中映射的没有设置器的属性。或者带有NotMappedAttribute 的属性,...不会被映射。
注意:只有导航属性(引用和集合)需要是虚拟的才能延迟加载。不是原始人。我认为这是 NHnibernate 的要求。
对于构造函数,您可以根据需要添加任意数量的参数化构造函数,您只需要 ALSO 一个无参数的构造函数。
顺便说一句,你也可以使用对象初始化器。
var test = new Test {
Name = bla,
Code = 2
};