实体框架6在封闭上下文中引用嵌套对象的能力

本文关键字:嵌套 引用 对象 能力 上下文 框架 实体 | 更新日期: 2023-09-27 18:01:13

我有一个类,它可以在屏幕上加载我想要的所有数据。

我将在using语句中加载所有数据,并在更高的类中返回结果记录。

我可以循环遍历对象,但任何嵌套的对象都不可用,当我尝试检查对象时,我会得到错误"函数求值需要运行所有线程"。

返回到网页的错误是"ObjectContext实例已被释放,不能再用于需要连接的操作。">

EF6中有没有一种方法可以让我加载所有对象和嵌套对象,并使它们在上下文之外可用?

实体框架6在封闭上下文中引用嵌套对象的能力

Using语句将自动处理对象。

您可以在获取主实体时使用include来获取相关实体。

https://msdn.microsoft.com/en-us/data/jj574232.aspx

DbContext不应该长期使用。最好实例化上下文,将您需要的所有数据从中复制到某个数组/集合中,然后立即处理它。然后,您可以使用此数组/集合访问数据。

示例:在控制器类中

Person[] people = Repo.GetAllPeople();

在Repository类中,您有类似于以下内容:

public People[] GetAllPeople()
{    
    try
    {
        MyDbContext cont = new MyDbContext();        
        return cont.People.ToArray();
    } 
    catch { return null; }    
    finally { cont.Dispose(); }
}

p.S。并且-使用语句并不是别的,只是:

try
{
   ...instantiate some_resource that inherits from IDisposable
   ...do something with this resource
}
finally {  some_resource.Dispose(); }