Entity Framework 主键+外键约束与级连删除 Database First(2)Include 的使用方法

       

       这几天搞明白一个问题Include 的使用方法、使用场景,之所以名字使用之前的标题,是因为我不想再写一遍类关系图,想看类关系图的请看第一篇文章,

       先说一个其它问题:this.Configuration.LazyLoadingEnabled = false;(把它放在DBContext构造函数中),这句话干嘛的?如果没有这句话,EF会加载查询类中【所有】的关系表到内存中,导致速度会受影响,所以我们先要切断类和类之间的联系,切断之后我们可以通用Include 的方法再把它们连接起来,达到我们查询多表的目地,及提高了速度又不影响我们的业务使用。

//加载KeyMain下的KeyType类
var a=await db.KeyMains.Include(k => k.KeyType).ToListAsync();
//加载KeyType下的KeyMain类
var b = await db.KeyTypes .Include(k => k.KeyMains).ToListAsync(); 
//加载KeyTypes 下的KeyMains下的KeyMainOne类
 var c = await db.KeyTypes .Include(k => k.KeyMains.Select(km => km.KeyMainOne)).ToListAsync();

如果是一对一对一关系直接点就可以,如果是一对多对多就要使用Select方法

2017.12.6 之后使用CodeFrist出现一个循环引用问题.

{
"Message": "出现错误。",
"ExceptionMessage": "“ObjectContent`1”类型未能序列化内容类型“application/json; charset=utf-8”的响应正文。",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": null,
"InnerException": {
"Message": "出现错误。",
"ExceptionMessage": "Self referencing loop detected for property 'RightScope' with type 'DIH.Settings.DAL.Model.RightScope'. Path '[0].RightItems[0]'.",
"ExceptionType": "Newtonsoft.Json.JsonSerializationException",

解决方法是在WebApiConfig.cs中加入:

//Ignore referenceloophandling for json.net
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

原文地址:https://www.cnblogs.com/cxd1008/p/7479539.html