Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 EDM structural annotations-用于在属性上提供IgnoreDataMemberAttribute的示例xml配置_Entity Framework 4 - Fatal编程技术网

Entity framework 4 EDM structural annotations-用于在属性上提供IgnoreDataMemberAttribute的示例xml配置

Entity framework 4 EDM structural annotations-用于在属性上提供IgnoreDataMemberAttribute的示例xml配置,entity-framework-4,Entity Framework 4,传统实体框架4项目(非POCOs) 默认情况下,所有基本体和导航实体属性都标记为DataMemberAttribute 我想用IgnoreDataMemberAttribute标记一个实体导航属性。其目的是,当在WCF中使用DataContractSerializer时,当集合中存在大量相关实体时,它不会在web服务中生成非常大的序列化对象。物业的可及性似乎并不重要 我已经看过一些关于在edmx文件中使用结构注释的文档和说明。这似乎很适合这个目的 是否可以使用结构注释在edmx文件的CSDL中标

传统实体框架4项目(非POCOs)

默认情况下,所有基本体和导航实体属性都标记为DataMemberAttribute

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

我已经看过一些关于在edmx文件中使用结构注释的文档和说明。这似乎很适合这个目的

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

如果是,有人能举个例子吗


谢谢

尽管此方法删除了所有导航属性的属性,但通过使用自定义T4模板似乎可以做到这一点

这些步骤是:

在EDM设计器表面上单击鼠标右键,然后选择“添加代码生成项”

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

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

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

  • 编辑TT文件以从导航属性部分删除[DataMemberAttribute]

更多信息:


您不需要使用
IgnoreDataMemberAttribute对其进行标记
——它仅用于默认序列化。您只需要删除
DataMemberAttribute
,但要点是一样的-您需要告诉T4模板不要生成该属性。我很久以前就写过。它使用结构注释的目的不同,但您可以在T4模板中找到一些初始信息,如定义注释和访问注释。您不需要使用
copytosdl
属性,因为您的批注仅适用于CSDL。如果您希望从设计器中的属性窗口(而不是XML)控制批注,您还必须为Visual Studio编写扩展名。