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生成的模型依赖