为了实现 T4模板关联属性 不要序列化的问题 就是要在具体的 关联属性上面添加一个元数据

这里利用以前的 Newtonsoft.Json 这个框架为例

效果应该为

就是要在关联属性上面添加元数据  【JsonIgnore】

注意: 默认会报错,如下

请记住错误个数,多了就证明你写的有问题。而且你不要奇怪有这么多错误。

如果你不出现这么多个错误提示,你就应该去找一下模板 如下的位置。

把T4模板 关掉错误就不会存在了。

步骤

1、导入命名空间。不然出来的全是BUG

//添加引用
public string UsingDirectives(bool inHeader, bool includeCollections = true)
{
return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
? string.Format(
CultureInfo.InvariantCulture,
"{0}using System;{1}{3}" +
"{2}",
inHeader ? Environment.NewLine : "",
includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
inHeader ? "" : Environment.NewLine, Environment.NewLine + "using Newtonsoft.Json;")
: "";
}

2、导入命名空间  ,然后我们就要找导航属性到底是什么了

首先我找到 Property 属性这里,

加到里面后发现效果有问题。

除了导航属性外 ,其他的属性都有了元数据,就是说我找错位置了。

然后我继续找 在   Property  下面有一个 NavigationProperty

public string NavigationProperty(NavigationProperty navigationProperty)
   {
       var endType = _typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType());
       return string.Format(
           CultureInfo.InvariantCulture,
           "{5}{0} {1} {2} {{ {3}get; {4}set; }}",
           AccessibilityAndVirtual(Accessibility.ForProperty(navigationProperty)),
           navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType,
           _code.Escape(navigationProperty),
           _code.SpaceAfter(Accessibility.ForGetter(navigationProperty))

, _code.SpaceAfter(Accessibility.ForSetter(navigationProperty)), "[JsonIgnore]" + Environment.NewLine);
   }

3、果然这样就有了数据

保存后会自动修改元数据,所以不用担心。

4、扩展:
下面 提供一些其他的特性添加的位置

如果添加下面这些数据,还要导入命名空间

using System.Runtime.Serialization; 方法同步骤1

//给属性增加[DataMember]
public string Property(EdmProperty edmProperty)
{
return string.Format(
CultureInfo.InvariantCulture,
"{5}{0} {1} {2} {{ {3}get; {4}set; }}",
Accessibility.ForProperty(edmProperty),
_typeMapper.GetTypeName(edmProperty.TypeUsage),
_code.Escape(edmProperty),
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)), "[DataMember]" + Environment.NewLine);
}
//给类添加[DataContract]
public string EntityClassOpening(EntityType entity)
{
return string.Format(
CultureInfo.InvariantCulture,
"{4}{0} {1}partial class {2}{3}",
Accessibility.ForType(entity),
_code.SpaceAfter(_code.AbstractOption(entity)),
_code.Escape(entity),
_code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)),
"[DataContract]" + Environment.NewLine
);
}

越学越不懂。

最新文章

  1. Could not publish server configuration for Tomcat v6.0 Server at localhost.
  2. wireshark 分析重传包
  3. SpringMVC控制器与视图的数据交换
  4. linux 内核参数VM调优 之 参数调节和场景分析
  5. iOS H5容器的一些探究(二):iOS 下的黑魔法 NSURLProtocol
  6. Diamond
  7. JS-兼容
  8. leetcode--009 Linked List Cycle I
  9. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
  10. 使用CSS3的clip-path(裁剪路径)实现剪贴区域的显示以及实例实现图片渐变
  11. 微信小程序制作家庭记账本之七
  12. POJ-1459 Power Network(最大流)
  13. Java面试问题总结
  14. clamp 函数
  15. python内置数据结构方法的时间复杂度
  16. 【Error】安装程序无法打开注册表项 UNKNOWN\Components\...
  17. 编写高质量代码改善C#程序的157个建议——建议14: 正确实现浅拷贝和深拷贝
  18. linux运维基础之跟我一起学正则表达式(一)
  19. CentOS开启FTP及配置用户
  20. .Net 学习资源整理

热门文章

  1. Android WebView 302斗争之旅
  2. 《像计算机科学家一样思考Java》—— 读后总结
  3. JQuery常用代码汇总
  4. 将公司的主要项目从eclipse迁移到android studio for mac环境(2)
  5. eclipse中的web环境配置
  6. 再不写,我怕就再也不写了-LAMP基础
  7. AC自动机入门
  8. jQuery 扩展功能
  9. SharePoint 2010 用xsl文件定制列表样式
  10. Commons IO - IOUtils
  11. Google机器学习笔记 4-5-6 分类器
  12. Python下的机器学习工具sklearn--数据预处理
  13. Visual Studio 2013 上使用 Github
  14. MSIL实用指南-IL版hello world
  15. 常用js函数开始收集~
  16. IdentityServer4(一)使用客户端凭证方式
  17. Java基础5-接口
  18. 潭州课堂25班:Ph201805201 django 项目 第三十八课 后台 文章发布,FastDFS安装 配置(课堂笔记)
  19. [P4994]终于结束的起点 (递推)
  20. The folder can’t be opened because you don’t have permission to see its contents.