C# &引用;无法访问已处置的对象";
从linq到sql访问关联对象时出现问题。 我有一个类文章和用户。每一篇文章都有一个卖家(即用户),每个用户都有许多文章。我通过一个协会解决了这个问题 以下是我的linq到sql类的外观: 这是协会: 以下是文章背后的代码。卖家:C# &引用;无法访问已处置的对象";,c#,linq-to-sql,C#,Linq To Sql,从linq到sql访问关联对象时出现问题。 我有一个类文章和用户。每一篇文章都有一个卖家(即用户),每个用户都有许多文章。我通过一个协会解决了这个问题 以下是我的linq到sql类的外观: 这是协会: 以下是文章背后的代码。卖家: [global::System.Data.Linq.Mapping.AssociationAttribute(Name="User_Article", Storage="_Seller", ThisKey="SellerID", OtherKey="ID", Is
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="User_Article", Storage="_Seller", ThisKey="SellerID", OtherKey="ID", IsForeignKey=true)]
public User Seller
{
get
{
return this._Seller.Entity;
}
set
{
...
}
}
现在,当我想得到一篇文章的卖家时,我得到了以下错误:
无法访问已释放的对象。对象名称:“已访问DataContext”
在处理之后
错误发生在卖方的get中
你知道怎么处理吗
编辑:这是使用DataContext的代码:
public static List<Article> Read()
{
using (uDataContext dbx = new uDataContext())
{
return dbx.Article.ToList();
}
}
公共静态列表读取()
{
使用(uDataContext dbx=new uDataContext())
{
返回dbx.Article.ToList();
}
}
该列表的用途如下:
List<Article> articles = ArticleDALC.Read();
foreach (Article article in articles)
{
// Exception appears here!
User seller = article.Seller;
....
}
List articles=ArticleDALC.Read();
foreach(文章中的文章)
{
//这里出现异常!
用户卖方=物品卖方;
....
}
不要处理数据上下文
所有LINQ对象都与DataContext关联。您可能正在使用创建数据上下文的块访问之外的对象。找到了解决方案:
使用DataContext时,只需将DeferredLoadingEnabled
属性设置为false:
public static List<Article> Read()
{
using (uDataContext dbx = new uDataContext())
{
dbx.DeferredLoadingEnabled = false;
return dbx.Article.ToList();
}
}
公共静态列表读取()
{
使用(uDataContext dbx=new uDataContext())
{
dbx.DeferredLoadingEnabled=false;
返回dbx.Article.ToList();
}
}
这是因为数据来自的上下文被释放了。您需要显示执行get的代码。感谢您的评论,我添加了执行get的代码!