了解实体框架类
我正在研究一个项目,我们需要从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
{}
少数有附加到他们,我猜关键字参考提供了一些方法的属性为EF来查找相关的表上领域。
如果我不想发送重EF课程,是否有比这种映射方法更好/不同的方法?如果没有,是否有一些参考资料可以帮助我理解实体框架是如何构建这些类的。
感谢您的时间
既然你需要获取从WCF服务,这是由EF框架的支持数据,你有没有考虑过使用OData的暴露EF对象?看看下面的一些链接:
http://www.hanselman.com/blog/ODataBasicsAtTheAZGroupsDayOfNETWithScottGu.aspx
http://blogs.msdn.com/b/adonet/archive/2010/10/27/entity-framework-and-odata-pdc10.aspx
我用非常类似的方法中的链接与一些自定义的部分类沿下面的东西,它的工作相当不错。
当您在EF创建类,它们对各自领域的[DataMember]
属性,就是这样得到的发送防空火炮的唯一数据电线。因此,它不像看起来那么沉重......
但是,由于您正在通过WCF传递,因此应该生成实体以进行自我跟踪,因此,当他们返回到服务时,您知道发生了什么变化并且不必从db中重新获取每个实体进行比较。
如果你仍然想要DTO的话,你也可以生成它们。如果你使用的是EF4.0,你可以选择提取T4文件(.tt),实际上代码生成 - 使用该文件并进行修改以满足您的需求并生成DTO以及映射程序类别...
要从edmx获取.tt文件(仅适用于EF4):右键单击您的模型,选择添加代码生成项目,然后选择EntityObject生成器,如果要通过wcf传输对象,请选择另一个。这将创建一个tt文件,您可以通过发出保存命令来运行该文件(如果要允许它运行,您将得到一个提示)。保存后,它将生成一个文件,该文件与EntityObject生成器的情况下由edmx模型生成的文件完全相同,或者如果使用其他生成器,则会生成两个.tt文件...