C# 如何将实体对象与实体框架分离?
根据我以前的项目架构师。C# 如何将实体对象与实体框架分离?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,根据我以前的项目架构师。 业务服务层 这里是业务逻辑 可以访问“实体”和“数据访问层” 数据访问层 SQL操作在这里进行 可以访问“实体Dto” 实体层 所有数据库表都在这里 表示层 可以访问业务和实体 无法访问数据访问层 看法 现在,为了添加实体框架,我希望遵循相同的体系结构。 业务服务层 这里是业务逻辑 可以访问“实体”和“数据访问层” 数据访问层 SQL操作在这里进行 此处为实体框架(.edmx) 实体层 我想在这里使用实体框架类(EntityObject)
- 业务服务层
- 这里是业务逻辑李>
- 可以访问“实体”和“数据访问层”
- 数据访问层
- SQL操作在这里进行李>
- 可以访问“实体Dto”
- 实体层
- 所有数据库表都在这里李>
- 表示层
- 可以访问业务和实体
- 无法访问数据访问层
- 看法
- 业务服务层
- 这里是业务逻辑李>
- 可以访问“实体”和“数据访问层”
- 数据访问层
- SQL操作在这里进行李>
- 此处为实体框架(.edmx)
- 实体层
- 我想在这里使用实体框架类(EntityObject)。因此,无需重写所有DTO,但需要确保CRUD不应通过此操作完成。不应包括ObjectContext/Dbcontext
- 表示层
- 可以访问业务和实体
- 无法访问数据访问层(实体框架)
- 看法
- 数据访问层-如果依赖于edmx,那么您的应用程序将紧密耦合以使用实体框架。如果可能,以这样的方式创建设计:DAL将实体层作为抽象进行对话,而不知道下面实现了哪个ORM(基于接口的设计)。将来,您可以用相对较少的努力引入其他ORM
- 为什么业务服务层需要实体层的引用。理想情况下,它应该有参考,并且只能访问DAL
- 与表示层的注释2相同
- 数据访问层-如果依赖于edmx,那么您的应用程序将紧密耦合以使用实体框架。如果可能,以这样的方式创建设计:DAL将实体层作为抽象进行对话,而不知道下面实现了哪个ORM(基于接口的设计)。将来,您可以用相对较少的努力引入其他ORM
- 为什么业务服务层需要实体层的引用。理想情况下,它应该有参考,并且只能访问DAL
- 与表示层的注释2相同
- 我想说几句话:
有几件事我想说:
调用
dbContext.SaveChanges()
时会发生CRUD。只要这只在数据访问层中完成,您就应该做得很好。@GeorgPatscheider我的意思是上下文不应该在那里。。但是上下文允许您执行sql操作。在我们的体系结构中,我们结合了业务层和数据访问层(业务逻辑直接与DbContext和实体一起工作)。当您调用DbContext.SaveChanges()
时,就会发生CRUD。只要这只在数据访问层中完成,您就应该做得很好。@GeorgPatscheider我的意思是上下文不应该在那里。。但是上下文允许您执行sql操作。在我们的体系结构中,我们结合了业务层和数据访问层(业务逻辑直接与DbContext和实体一起工作)。我在Presenter访问实体填充对象中的数据..->发送到业务->业务执行多个业务逻辑将实体转发到DAL->DAL将执行CRUD..实体表示EF类或是POCO。演讲者和企业不得进入EF课堂。至少,演示者不能确定。数据访问层实现必须了解EF,因为这是它自己的实现细节。从数据层抽象EF毫无意义。检查层的名称:数据访问层。如果我想稍后将数据源从SQL Server更改为Oracle,该怎么办。DAL将引用实体层,但它将更多地依赖于类/接口,而不是纯粹的ORM生成的模型依赖。我正在访问演示者对象中的实体填充数据..->发送到业务->业务执行多业务逻辑将实体转发到DAL->DAL将执行CRUD..实体表示EF类或是POCO。演讲者和企业不得进入EF课堂。至少,演示者不能确定。数据访问层实现必须了解EF,因为这是它自己的实现细节。从数据层抽象EF毫无意义。检查层的名称:数据访问层。如果我想稍后将数据源从SQL Server更改为Oracle,该怎么办。DAL将引用实体层,但它将更多地依赖于类/接口,而不是纯粹的ORM生成的模型依赖