zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    Swift扩展(Extension)
    Swift构造器(Initializer)与析构器(Deinitializer)
    Swift下标
    Swift方法
    Swift属性
    Swift类与结构体
    Swift闭包(Closure)
    python调用c++/c 共享库,开发板上编译的一些坑!
    python调用c++类方法(2)
    ubuntu 18.04 gcc g++降级4.8版
  • 原文地址:https://www.cnblogs.com/cxd1008/p/7479539.html
Copyright © 2011-2022 走看看