我一直在努力思考如何最好地将注释应用于域实体。到目前为止,这是我提出的:
在我看来,直接将注释应用于实体打破了以域为中心的架构的基本规则。该规则是一个图层仅引用它封装的图层。虽然没有那么多参考,但是向域实体添加ASP.Net注释会向域层通知UI层的细节。那么,如果我们不直接将注释应用于实体,我们将不得不对实体进行层特定表示,并根据需要在两者之间进行转换。但是,这是很多额外的代码,其中大部分都是重复的。因此,似乎最好的解决方案是将域实体上的属性标记为虚拟。这将允许特定于图层的实体从域实体继承,然后我们可以仅覆盖和注释需要它的属性。额外的好处是我们只需要以一种方式转换实体。这将是我们将基类型向下转换为派生类型的时候。但是,当我们将实体发送回应用服务层时,方法接口将需要基类型实体,从而自动向上扩展。
所以我的问题是: 这种方法有效吗? 默认情况下将域实体的属性标记为虚拟是否有危险? 这种方法在使用实体框架时是否也适用?或者最好将实体框架注释留给域实体,因为它不太可能改变?