要定义实体框架 - 可序列化类(EF Code First),我们需要使用公共虚拟属性作为数据持有者,稍后将用作数据库中的列。这使得开发人员无法从构造函数初始化实体的实例。我希望我的实体不仅是数据“桶”,而且还有行为,例如新对象的构造函数实例化,以及对象内的数据操作方法。
我想我可以采用的方法,但是我应该怎样做才能克服构造函数的限制?我是否应该引入将实例化属性属性并使用它的包装类?
答案 0 :(得分:1)
您可以“根据需要”使用方法,也可以使用不会在db中映射的没有setter的属性。或者具有NotMappedAttribute
的属性,其中......将不会被映射。
注意:对于延迟加载,只需要虚拟导航属性(引用和集合)。不是原始的。我认为这是NHnibernate的要求。
对于构造函数,您可以根据需要添加任意数量的参数化构造函数,您只需要一个无参数构造函数。
顺便说一句,您也可以使用对象初始值设定项。
var test = new Test {
Name = bla,
Code = 2
};