【问题标题】:Understanding Entity Framework classes了解实体框架类
【发布时间】:2011-05-01 20:15:54
【问题描述】:

我正在处理一个需要从 WCF 服务获取数据的项目。服务代码通过实体框架查找数据库。然而,为了防止通过网络将 EF 生成的类发送到客户端生成的代理中,我们决定将 EF 类中的值映射到自定义构建的 DTO 类,其中映射器类负责从生成的 EF 中提取值类并将它们放入 DTO 类。然后,我们将这些 DTO 类用于服务方法的请求和响应。 EF 从相互关联的表中构建类。我得到了各种类,它们的属性如下所示:

 public global::System.Data.Objects.DataClasses.EntityCollection<SubAttachment> Attachments
    {}

 public global::System.Data.Objects.DataClasses.EntityReference<Gl> GlCodeReference
    {}

一些属性附加了关键字 Reference,我猜这为 EF 提供了一些方法来查找该字段上的相关表。

如果我不想发送繁重的 EF 类,是否有比这种映射方法更好/不同的方法?如果没有,是否有一些参考资料可以帮助我理解实体框架是如何构建这些类的。

感谢您的宝贵时间

【问题讨论】:

    标签: c# wcf entity-framework-4


    【解决方案1】:

    由于您需要从 EF 框架支持的 WCF 服务中获取数据,您是否考虑过使用 OData 来公开 EF 对象?查看以下链接:

    http://www.odata.org/

    http://www.hanselman.com/blog/ODataBasicsAtTheAZGroupsDayOfNETWithScottGu.aspx

    Link

    【讨论】:

      【解决方案2】:

      当您在 EF 中创建类时,它们的字段具有 [DataMember] 属性,这是唯一通过网络发送的数据。所以,它并不像看起来那么重......

      但是,由于您正在通过 WCF,因此应该生成实体以进行自我跟踪,因此当它们返回服务时,您知道发生了什么变化,而不必从 db 重新获取每个实体来执行比较。

      如果您仍然需要 DTO,也可以生成它们。如果您使用的是 EF4.0,您可以选择提取 T4 文件 (.tt),该文件实际上会生成代码 - 使用该文件并根据您的需要进行更改并生成 DTO 以及映射器类...

      要从 edmx 获取 .tt 文件(仅适用于 EF4):右键单击您的模型,选择添加代码生成项,然后选择 EntityObject 生成器,如果您希望通过 wcf 传输对象,则选择另一个。这将创建一个 tt 文件,您可以通过发出保存命令来运行该文件(如果您想允许它运行,您会得到一个提示)。保存时,它会生成一个与 edmx 模型生成的文件完全相同的文件,如果您使用的是另一个生成器,那么您将有两个 .tt 文件...

      【讨论】:

        【解决方案3】:

        我使用了与下面链接中的方法非常相似的方法以及一些自定义部分类,并且效果非常好。

        Link

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-16
          • 1970-01-01
          • 2011-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-11
          • 1970-01-01
          相关资源
          最近更新 更多