博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF异常:对一个或多个实体的验证失败
阅读量:4166 次
发布时间:2019-05-26

本文共 847 字,大约阅读时间需要 2 分钟。

背景

      最近一直在做项目,我想对自己的心态成长方面自己进步了很多,看淡很多事情,也看重了很多事情,这种收获很棒。下面是自己遇到的一个问题:

这里写图片描述


解决方法

      自己上网查了一些资料,很容易会发现,只要我们关闭自动验证跟踪实体就可以解决这个问题了,这样的问题一般会出现在 调用 System.Data.Entity.DbContext.SaveChanges() 时是否自动验证跟踪实体,那我们要如何做呢?在执行保存是,将验证关闭,之后打开,如下

dbcontext.Configuration.ValidateOnSaveEnabled = false;dbcontext.SaveChanges();dbcontext.Configuration.ValidateOnSaveEnabled = true;

      上面操作后我们的问题确实是解决了,不过这却是掩耳盗铃的方法,真正的问题我们并不知道,于是我便继续查找了一些验证跟踪实体的资料,不过目前也没有发现根源,只是莫名的感觉离答案越来越近了。


跟踪实体

      我们用的是EF映射的ORM,会自动进行实体的验证,当我们对实体进行查询和更新和其他相关操作的时候。

   “ADO.NET 自跟踪实体生成器”模板由两个文本模板文件组成:<模型名称>.tt 和 <模型名称>.Context.tt。若要自定义生成对象层代码的方式,必须修改 .tt 文件。 可能需要修改类型化对象上下文的名称;为实体类型添加新的或者修改现有的属性或特性;或者让实体类型从某个接口继承。我们使用的是前者的模板,例如下图:

这里写图片描述

      有一些事情挺困惑的,这种错误出现具有很大的偶然性,不过我认为对实体验证安全性还是有保障的,期间会抛错误,自己也了解到可能会有数据库的结构发生了改变;实体中的一些参数出现了null值,,,很遗憾,不是自己的情况,自己回头想想,操作的也就是数据库的表的级联,不知道这会不会有一些影响。


结语

      我们在不断的试错中,如果你问我在干什么,我想根据这几天的状态我的回答是:我在调Bug~

你可能感兴趣的文章
2018.4.32
查看>>
2018.4.33
查看>>
《python基础教程》答案(第一章)
查看>>
2018.4.34
查看>>
2018.4.35
查看>>
2018.4.36
查看>>
我为什么要写博客
查看>>
如何导入pycharm无法导入的包
查看>>
2018.4.37
查看>>
2018.4.38
查看>>
2018.4.39
查看>>
2018.4.40
查看>>
2018.5.27
查看>>
2018.5.51
查看>>
2018.5.52
查看>>
《python基础教程》答案(第四章)
查看>>
2018.5.53
查看>>
2018.5.54
查看>>
2018.5.55
查看>>
2018.5.58
查看>>