EF获取当前的ObjectContext

时间:2012-03-26 14:23:41

标签: c# .net entity-framework

我需要获得给定实体的当前上下文

我在2009年发现了这篇旧文章

http://blogs.msdn.com/b/alexj/archive/2009/06/08/tip-24-how-to-get-the-objectcontext-from-an-entity.aspx

鉴于我们现在已经坚定地在2012年,还有另一种方式吗?

更新 - 这里有一些关于这里需要的细节

表1 - 星形模式的核心       标签nvarchar(300)       Idx identity int

表2 - 标签参考       TagID标识int       TagText nvarchar(50)

表3 - 表1和表之间的差异表2      IDX FK      TagID FK

在Table1的Context.SavingChanges()事件中     解析标签并将其保存到Table2,并使用Table1

中的上下文将关系添加到Table3

欢迎任何有关如何改善此事的指导

2 个答案:

答案 0 :(得分:1)

如果您在SavingChanges事件处理程序中,则不需要从实体获取上下文,而是事件的发送方对象是ObjectContext。这是在这种情况下获取上下文的适当位置。例如:

public void context_SavingChanges(object sender, EventArgs e)
{
    ObjectContext context = sender as ObjectContext;
    // Do whatever you need to do...
}

答案 1 :(得分:0)

这篇文章展示了如何从IEntityWithRelationships获得,这是真的,但如果是的话。对于当前的Context来自实体的名称,不要以为你可以做....也许得到EntityContainerName:

public static string GetEntityContainerName(EntityObject entity)
{
        string entityContainerName = entity.EntityKey.EntityContainerName;
        return entityContainerName;
}

如果需要重用当前上下文,则需要将其作为方法中的参数传递。

问候