objetos - system.nullreferenceexception c#
"No se puede acceder a un objeto eliminado" (2)
No deseche su DataContext.
Todos los objetos LINQ están asociados con un DataContext. Probablemente esté accediendo al objeto fuera del bloque de using
donde se crea el DataContext.
Tengo un problema al acceder a un objeto de asociación de linq a sql. Tengo una clase de Artículo y Usuario. Cada artículo tiene un vendedor (que es un usuario) y cada usuario tiene muchos artículos. Lo resolví con una asociación.
Así es como se ven mis clases de linq a sql:
Y esta es la asociación:
Aquí está el código detrás del artículo. Vendedor:
[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
{
...
}
}
Ahora, cuando quiero obtener el vendedor de un artículo, aparece el siguiente error:
No se puede acceder a un objeto eliminado. Nombre del objeto: ''DataContext accedido después de Dispose''.
El error ocurre en la obtención del vendedor.
¿Alguna idea de cómo manejar esto?
EDITAR: Heres es el código donde se usa DataContext:
public static List<Article> Read()
{
using (uDataContext dbx = new uDataContext())
{
return dbx.Article.ToList();
}
}
La lista se usa de la siguiente manera:
List<Article> articles = ArticleDALC.Read();
foreach (Article article in articles)
{
// Exception appears here!
User seller = article.Seller;
....
}
Solución encontrada:
Simplemente configure la propiedad DeferredLoadingEnabled
en false cuando use el DataContext:
public static List<Article> Read()
{
using (uDataContext dbx = new uDataContext())
{
dbx.DeferredLoadingEnabled = false;
return dbx.Article.ToList();
}
}