我有一个分布式数据库,我认为在更新时触发事件可能会更好,这样所有用户都可以立即更新他们的数据,并找到了这篇很好的文章;EF Events
我相信来自this article的上下文被定义为实体容器名称,在我的例子中是"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来生成我的数据库,如果这有什么不同的话?)
发布于 2013-02-22 10:45:38
CertsModelContainer是DbContext还是ObjectContext?只有后者有ObjectStateManager。
如果您正在使用事务,则可以使用Transaction.TransactionCompleted
发布于 2013-03-09 02:46:40
如果您的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));
};
}https://stackoverflow.com/questions/15015975
复制相似问题