我有以下Linq to SQL结构:我有类“Article”和“User”。每篇文章都有卖家(这是一个用户),每个用户都有很多文章。我用一个关联解决了这个问题。返回LINQ到列表中的SQL关联对象
然后,我有一个方法Read(),它可以获取所有文章并以列表返回。
public static List<Article> Read()
{
using (DataContext dbx = new DataContext())
{
return dbx.Article.ToList();
}
}
所以,现在的问题是:当我在程序的任何地方使用该列表,我想访问article.Seller,我得到以下异常:
无法访问已释放的对象
好吧,这似乎是合法的,因为我返回列表,然后处理DataContext。如果我想访问卖家,它将从数据库中加载,并且不可能再使用处置的DataContext。
所以我解决了延迟加载并将DeferredLoadingEnabled属性设置为false。 要加载卖方,我使用了DataLoadOptions。
好吧,那到目前为止,但只在一个级别。现在我可以访问article.Seller了,但如果我想要获得该卖家的其他文章(article.Seller.Articles),我会得到null。 只是装上卖家的物品options.LoadWith<User>(u => u.Articles);
我想,但这也是不可能的,因为它是无止境的。
文章 - >卖家 - >文章 - >各条的卖家 - >文章 - >再次卖家 - > ...
我得到的异常
周期中LoadOptions LoadWith类型不允许图形。
我想要的是一种方法来获取所有的文章与正确的关联对象,如我的第一个方法中所示。 关联对象应始终可访问,但只能在访问时从数据库加载。
这将是可能的,如果我在任何地方使用DataContext我需要在程序中的列表,然后只在DataContext中使用列表。 但这会很费力。
你们有没有想法如何在我的程序中无处不在编写我的Read()方法的代码的情况下访问关联对象我需要列表?