首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义实体框架ObjectStateManager

未定义实体框架ObjectStateManager
EN

Stack Overflow用户
提问于 2013-02-22 10:41:17
回答 2查看 2.8K关注 0票数 0

我有一个分布式数据库,我认为在更新时触发事件可能会更好,这样所有用户都可以立即更新他们的数据,并找到了这篇很好的文章;EF Events

我相信来自this article的上下文被定义为实体容器名称,在我的例子中是"CertsModelContainer“

然而,当我尝试的时候;

代码语言:javascript
复制
using (CertsModelContainer db = new CertsModelContainer())
{
    db.ObjectStateManager.ObjectStateManagerChanged += (sender, e) =>
    {
        Console.WriteLine(string.Format(
            "ObjectStateManager.ObjectStateManagerChanged | Action: {0}, Object: {1}",
            e.Action,
            e.Element));
    };
}

Visual studio通知我,CertsModelContainer不包含“ObjectStateManager”的定义

我不确定为什么会发生这种情况,以及如何修复它,有人能帮我吗?

(我使用EF5和ModelFirst来生成我的数据库,如果这有什么不同的话?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-22 10:45:38

CertsModelContainer是DbContext还是ObjectContext?只有后者有ObjectStateManager。

如果您正在使用事务,则可以使用Transaction.TransactionCompleted

票数 2
EN

Stack Overflow用户

发布于 2013-03-09 02:46:40

如果您的CertsModelContainer是DbContext,则可以将其转换为IObjectContextAdapter以访问ObjectStateManager。

例如:

代码语言:javascript
复制
using (CertsModelContainer db = new CertsModelContainer())
{
    ((IObjectContextAdapter)db).ObjectStateManager.ObjectStateManagerChanged += (sender, e) =>
    {
        Console.WriteLine(string.Format(
            "ObjectStateManager.ObjectStateManagerChanged | Action: {0}, Object: {1}",
            e.Action,
            e.Element));
    };
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15015975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档