在分层应用程序中,让您在共享层中定义实体是一种好习惯吗?我想我将在所有图层中使用它们。或者它们属于业务层?
MSDN's layered application guideline将业务实体置于业务层
Layered Architecture Sample for .NET将实体置于共享层
中可以这样吗?
或者必须像这样
该做什么以及为什么?
答案 0 :(得分:1)
我通常按以下结构组织项目:
业务层
DAL数据访问层
答案 1 :(得分:0)
我想说这取决于这些实体是否包含业务逻辑。
从分层应用指南:
业务实体还验证实体中包含的数据 并封装业务逻辑以确保一致性和实现 业务规则和行为。
相比之下,Layered Architecture Solution Guidance似乎依赖于代码生成来创建实体,它们仅仅是数据容器,其中几乎没有逻辑。
Rich domain entities往往不属于共享模块,因为这意味着要承担大量您不希望每个人都拥有的行为(想象能够直接在客户端上操作业务逻辑)另一方面,相反的贫血是轻量级的,可以愉快方便地分布在各处。
答案 2 :(得分:0)
我的方法有点不同。在数据层中,我存储了所有实体,在共享层中,我有DTO对象(域转移对象),它们是实体的精确副本,但没有实体框架控制。为了相互映射,我使用了一个流畅且易于使用的mapper(AutoMapper)。
我无法理解为什么Entity Framework不支持只使用实例的接口。