本文共 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~