这在概念上与我的问题这里有关。然而,我一直在玩NHibernate,并且意识到我问题的真正核心是什么。
在典型的OO设计中,为了正确地封装数据,将值传递给存储在数据成员(字段)中的对象的构造函数是一种常见的模式。那些不应该更改的值只公开了访问器(只读属性)。允许更改的对象同时具有访问器和修改器(读-写属性)。在我看来,适当的 O/RM应该尊重这些约定,并在创建对象时使用可用的构造函数。依赖于读写属性、反射或其他hackish (IMHO)方法seems...wrong。
是否有一个.NET O/RM解决方案可以做到这一点?
编辑
为了解决Praveen的问题,我知道有些项目具有选择构造函数的“默认”算法--例如,StructureMap总是使用参数最多的构造函数,除非您用自定义属性标记构造函数。我认为这是一个有效的办法来处理这种情况。也许,除了ORM之外,使用IoC容器还会提供我需要的解决方案--尽管在我看来,这并不是本质上不好的,但对于使用ORM来说,这似乎是不必要的额外步骤。
发布于 2009-05-29 15:55:38
这取决于您认为不应该更改的值。自动增量、计算列等都是很好的候选项。
当然,我使用我编写的ORM,如果您试图设置只读属性的值,它会引发异常。
更新:
记住,构造函数也用于持久化数据。让对象在构造函数中接受PK(s)是一种常见的模式,它将自动获取该记录。
https://stackoverflow.com/questions/926668
复制相似问题