C# 未定义实体框架ObjectStateManager

C# 未定义实体框架ObjectStateManager,c#,entity-framework,C#,Entity Framework,我有一个分布式数据库,我认为在更新时触发事件可能很好,这样所有用户都可以立即更新数据并找到这篇好文章 我相信上下文是被定义为实体容器名的,在我的例子中是“CertsModelContainer” 然而,当我尝试时 using (CertsModelContainer db = new CertsModelContainer()) { db.ObjectStateManager.ObjectStateManagerChanged += (sender, e) => {

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

我相信上下文是被定义为实体容器名的,在我的例子中是“CertsModelContainer”

然而,当我尝试时

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生成数据库,如果这有什么区别的话?

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


如果您使用的是事务,则可以使用Transaction.TransactionCompleted

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


如果您使用的是事务,则可以使用Transaction.TransactionCompleted

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

例如:

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));
    };
}

如果CertsModelContainer是DbContext,则可以将其强制转换为IObjectContextAdapter,以便访问ObjectStateManager

例如:

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));
    };
}

我认为ModelFirst让它成为一个DbContext。。。是否有任何类型的事件类似于ObjectStateManager在DbContext中的事件?您可以覆盖SaveChanges并在那里执行工作。或者可以挂接到事务完成中。我认为ModelFirst使其成为DbContext。。。是否有任何类型的事件类似于ObjectStateManager在DbContext中的事件?您可以覆盖SaveChanges并在那里执行工作。或者可能会连接到事务完成中。