未定义实体框架ObjectStateManager

本文关键字:ObjectStateManager 框架 实体 未定义 | 更新日期: 2023-09-27 18:00:42

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

从这篇文章中,我相信上下文被定义为实体容器名称,在我的案例中是"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生成我的数据库,如果这有什么不同的话?)

未定义实体框架ObjectStateManager

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));
    };
}
相关文章:
  • 没有找到相关文章