0

传统实体框架 4 项目(不是 POCO)。

默认情况下,所有基元和导航实体属性都使用 DataMemberAttribute 进行标记。

我想用 IgnoreDataMemberAttribute 标记一个实体导航属性。目的是当在 WCF 中使用 DataContractSerializer 时,当集合中有大量相关实体时,它不会在 Web 服务中生成非常大的序列化对象。该属性的可访问性似乎并不重要。

我在这里这里看到了一些关于将结构注释与 edmx 文件一起使用的文档。这似乎很适合这个目的。

是否可以使用结构注释在 edmx 文件的 CSDL 中使用 IgnoreDataMemberAttribute 标记实体属性?

如果是这样,有人可以提供一个例子吗?

谢谢!

4

1 回答 1

0

这似乎可以通过使用自定义 T4 模板来实现,尽管这种方法会删除所有导航属性的属性。

步骤是:

右键单击 EDM 设计器图面,然后选择添加代码生成项。

  • 选择 ADO.NET EntityObject Generator 并指定您正在创建的 T4 模板 tt 文件的名称。

  • 单击解决方案资源管理器窗口中的 EDMX 文件,然后在属性窗格中清除自定义工具属性。

  • 单击解决方案资源管理器窗口中的 TT 文件,然后在属性窗格中,指定自定义工具命名空间(如果适用)。

  • 编辑 TT 文件以从 Navigation Property 部分中删除 [DataMemberAttribute]

更多信息:

https://blogs.msdn.com/b/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

http://www.smartsoftwarebits.com/qaa/46-misc/107-how-to-prevent-entity-framework-navigation-property-from-being-exposed-through-wcf-service

于 2012-07-28T15:41:08.987 回答