gpt4 book ai didi

c# - 从 Entity Framework 中的实体获取 DbContext

转载 作者:IT王子 更新时间:2023-10-29 04:21:17 26 4
gpt4 key购买 nike

在 Visual Studio 的调试 session 中,我深入业务层的某处,试图找出为什么实体在尝试持久化更改时表现异常。

此时在调用堆栈中获取对此实体所属的 DbContext 的引用真的很有帮助。

即查看此实体的状态(未更改、已修改等)。

所以我正在寻找这样的辅助方法:

var db_context = DbContextHelpers.GetDbContext(entity);

// after that I could do something like this
var state = db_context.Entry(entity);

我可以在调试期间在即时窗口中使用这些东西。

有人有什么建议吗?

额外说明

实体必须知道某处的 DbContext,因为它正在使用它来延迟加载导航属性?

最佳答案

public static DbContext GetDbContextFromEntity(object entity)
{
var object_context = GetObjectContextFromEntity( entity );

if ( object_context == null )
return null;

return new DbContext( object_context, dbContextOwnsObjectContext: false );
}

private static ObjectContext GetObjectContextFromEntity(object entity)
{
var field = entity.GetType().GetField("_entityWrapper");

if ( field == null )
return null;

var wrapper = field.GetValue(entity);
var property = wrapper.GetType().GetProperty("Context");
var context = (ObjectContext)property.GetValue(wrapper, null);

return context;
}

关于c# - 从 Entity Framework 中的实体获取 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com