问题描述
我们在整个项目中都有一个静态的DbContext。 这是get方法:
public static istanbulEntities DbContext
{
get
{
string ocKey = "ocm_" + HttpContext.Current.GetHashCode().ToString("x");
if (!HttpContext.Current.Items.Contains(ocKey))
HttpContext.Current.Items.Add(ocKey,new istanbulEntities());
return HttpContext.Current.Items[ocKey] as istanbulEntities;
}
}
当Global.asax中的例行任务正在运行时,我们将遇到以下例外情况:
- 属性“ id”是对象键信息的一部分,无法修改。
- 已成功提交对数据库的更改,但是在更新对象上下文时发生错误。 ObjectContext可能处于不一致状态。内部异常消息:由于多个“ TBL_MAIL”类型的实体具有相同的主键值,因此保存或接受更改失败。确保显式设置的主键值是唯一的。确保在数据库和实体框架模型中正确配置了数据库生成的主键。将实体设计器用于数据库优先/模型优先配置。使用“ HasDatabaseGeneratedOption”流利的API或“ DatabaseGeneratedAttribute”进行代码优先配置。
是否可能与执行并发操作时拥有一个静态DbContext有关?
编辑:我在Global.asax中的日常任务中使用了局部变量,但是现在遇到了其他错误。这是我写过的帖子:The underlying provider failed on Open and other exceptions with local DbContext variables
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)