zoukankan      html  css  js  c++  java
  • EF 使用遇到过的错误记录备忘

    1. is only supported for sorted input in LINQ to Entities  The method :只支持排序输入实体LINQ 的方法

        是使用skip()时没有排序时报的错误

    2. Validation failed for one or more entities. 'See EntityValidationErrors' property for more details :验证失败的一个或多个实体。更多细节见“entityvalidationerrors”属性

        修改数据字段的时候报的错误

        2.1 关闭ef的实体检查

    db.Configuration.ValidateOnSaveEnabled = false

        2.2 查看entityvalidationerrors具体那个些字段没有通过

    3. 当从数据库取出数据的时候对表中的数据项做扩张方法的时候,例如.ToString()报错。

        错误代码:

              var data = from d in Db.Members
                               where d.ID == User_Id
                               select new
                               {
                                   d.ID,
                                   d.Status
                               };
                    var result = from r in data
                                 select new
                                 {
                                     status = r.Status.Display()
                                 };

        修改后:

                   var data = from d in Db.Members
                               where d.ID == User_Id
                               select new
                               {
                                   d.ID,
                                   d.Status
                               };
                    var result = from r in data.ToList()
                                 select new
                                 {
                                     status = r.Status.Display()
                                 };        

    刚取出数据的时候IQueryable<>的类型,把它转换成List();ToList()

     4. An entity object cannot be referenced by multiple instances of IEntityChangeTracker:IEntityChangeTracker

         单独使用DbContext对象操作

            using (var db = new Context.Create())
                {
                    //把使用过的DbContext对象都释放掉
                }

     5. entity framework在使用一对一的关系,添加数据不报错,但是数据添加不进去

      错误的代码:

    /**
                 * shop:是主表
                 * shopCertificate:是shop的从关系(外键)
                 * 直接new出外键不会报错,但也添加不了数据
    * 表红的地方,进行外键绑定 * *
    */ using (var db = Context.Default) { var shop = new Shop() { Address = "qwe", Banance = "asd", Certificate = null, City = "zxcf", Description = "rty", District = "fgh", Logo = "vbn", Memo = "uio", Name = "jkl", Provence = "nm", Tax = 0.1m, Status = ShopStatus.Abnormal, Type = null }; var shopCertificate = new ShopCertificate() { BankAccountName = "", BankAccountNumber = "", BankName = "", BankNumber = "", CompanName = "", LegalPerson = "", LegalPersonIDCardNumber = "", LegalPersonIDCardPath = "", LicenseNumber = "", LicensePath = "", Status = CompanyStatus.Abnormal, Shop_Id = shop.ID, TaxCertificateNumber = "", TaxCertificatePath = "", }; db.ShopCertificates.Add(shopCertificate); db.Shops.Add(shop); db.SaveChanges(); }

      正确的做法

                using (var db = Context.Default)
                {
                    var shop = new Shop()
                    {
                        Address = "qwe",
                        Banance = "asd",
                        Certificate = null,
                        City = "zxcf",
                        Description = "rty",
                        District = "fgh",
                        Logo = "vbn",
                        Memo = "uio",
                        Name = "jkl",
                        Provence = "nm",
                        Tax = 0.1m,
                        Status = ShopStatus.Abnormal,
                        Type = null
                    };
                    //直接用shop的外键关系上再创建新的对象
    //调试可以看到result值为2 shop.Certificate
    = new ShopCertificate() { BankAccountName = "", BankAccountNumber = "", BankName = "", BankNumber = "", CompanName = "", LegalPerson = "", LegalPersonIDCardNumber = "", LegalPersonIDCardPath = "", LicenseNumber = "", LicensePath = "", Status = CompanyStatus.Abnormal, Shop_Id = shop.ID, TaxCertificateNumber = "", TaxCertificatePath = "", }; db.Shops.Add(shop); int result = db.SaveChanges(); }
  • 相关阅读:
    揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍
    打造一个上传图片到图床利器的插件(Mac版 开源)
    游戏编程十年总结(下)
    游戏编程十年总结(上)
    使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
    手机网游实时同步方案
    Unity AssetBundle爬坑手记
    Unity3D新手引导开发手记
    敏捷开发随笔(一)高效软件开发之道
    U3D DrawCall优化手记
  • 原文地址:https://www.cnblogs.com/haosit/p/6877827.html
Copyright © 2011-2022 走看看