码迷,mamicode.com
首页 > 其他好文 > 详细

通过T4模板解决EF模型序列号的循环引用问题

时间:2018-02-10 21:19:44      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:比较   dea   div   循环引用   空间   gdi   framework   gen   soft   

在模型的T4模板(如model.tt)中插入如下代码,这样由模板生成的模型代码中的导航属性将自动带有[JsonIgnore]标识,不会被序列化

1. 添加命名空间的引用

找到以下代码,添加using Newtonsoft.Json;

BeginNamespace(code);
#>
using Newtonsoft.Json;
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
  

2.为导航属性添加JsonIgnore标签

找到以下代码,插入[JsonIgnore]标签

<#
foreach (var navigationProperty in navigationProperties)
{
if (navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)
{
#>
[JsonIgnore]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
<#
}
#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#
}
}
#>

 

BTW:另外一个比较好的解决方是Gryzor大侠的:

解决.Net MVC EntityFramework Json 序列化循环引用问题.

通过T4模板解决EF模型序列号的循环引用问题

标签:比较   dea   div   循环引用   空间   gdi   framework   gen   soft   

原文地址:https://www.cnblogs.com/ccjungle/p/8439703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!