【问题标题】:Entity Framework: Separation of concerns实体框架:关注点分离
【发布时间】:2010-12-14 13:03:12
【问题描述】:

我正在使用 EF,想知道其他人如何将数据上下文与实体分开。

基本上我需要一层来访问数据上下文(模型对象)来调用 SaveChanges() 等。其他层需要访问实体类型本身。例如,如果一个方法返回一个实体,而我从我的 UI 中调用了该方法,那么我将不得不从 UI 中引用模型,这并不好。

有没有办法让实体类型在一个项目中,而数据上下文在另一个项目中?

我猜另一种方法是为每个实体创建接口并将接口放在另一个项目中,其他层可以引用。但这需要大量的维护和麻烦

【问题讨论】:

    标签: c# .net entity-framework .net-3.5


    【解决方案1】:

    在我看来,虽然这确实是一件让人头疼的事情,但接口是更好的选择。您将真正实现松散耦合。

    使用接口,您以后可以完全更改您的实体层,而您的 UI 甚至都不会注意到。为此目的创建了接口,明确分离和隔离。

    人们总是倾向于觉得界面乏味且浪费时间。但是我告诉你,你通过忽略它们节省的时间,你会在以后付出的!

    Marc_s 也给了你一个很好的答案(嘿,那是 marc_s!),但在我看来不那么纯粹。
    你也可以使用 POCO 实体对象,但是耦合从这里开始。

    【讨论】:

      【解决方案2】:

      根据您的实体创建一个域模型,它基本上反映了您拥有的字段/属性。这可以在一个完全独立的项目、独立的层中。

      要在两者之间进行映射 - EF 实体和域模型类 - 我会使用像 AutoMapper 这样的工具来简化两个独立但几乎相同的类之间的分配。

      这样你可以得到一个干净、漂亮的分离,并且你可以省去很多无聊的打字!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多