Linq to sql 从未请求的实体上的LINQ到SQL ObjectDisposedException
我有这种奇怪的行为。我正在列表中加载一些实体并附加到网格中。 双击网格时,我将行转换为实体并附加到属性 我已经更改了数据库和代码中的一些内容,现在我得到了这个异常,而我从来不想检查这个实体引用中的某些内容Linq to sql 从未请求的实体上的LINQ到SQL ObjectDisposedException,linq-to-sql,c#-3.0,Linq To Sql,C# 3.0,我有这种奇怪的行为。我正在列表中加载一些实体并附加到网格中。 双击网格时,我将行转换为实体并附加到属性 我已经更改了数据库和代码中的一些内容,现在我得到了这个异常,而我从来不想检查这个实体引用中的某些内容 有什么想法吗?当我试图访问一个属性时,这种情况似乎发生在我身上,该属性不是该实体派生自的数据库表中的列之一 例如,您的数据库可能有一个表Vehicle,其中包含列Id、Year、Make、Model和EngineId。LinqToSql实体将为每个列都有一个属性,但它还添加了一个名为引擎的属性
有什么想法吗?当我试图访问一个属性时,这种情况似乎发生在我身上,该属性不是该实体派生自的数据库表中的列之一 例如,您的数据库可能有一个表
Vehicle
,其中包含列Id
、Year
、Make
、Model
和EngineId
。LinqToSql实体将为每个列都有一个属性,但它还添加了一个名为引擎
的属性,该属性包含一个引擎
实体
如果您将车辆
数据转换为列表
,然后尝试访问引擎
上的某些属性,您将获得ObjectDisposedException
,除非您的数据上下文
仍处于活动状态
因此,如果您需要,比如说,Vehicle.Engine.CylinderCount
在您使用完DataContext
之后,您需要构建一个自定义对象来展平您的数据,这样您只需要一个“点”即可获得所需的数据
您可以编写一个ViewModel
类来轻松完成此任务。例如:
public class VehicleViewModel
{
public int Id { get; set; }
public int Year { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public int EngineId { get; set; }
public int CylinderCount { get; set; }
}
现在,如果您编写LinqToSql查询来填充
列表而不是列表
,那么当您尝试访问CylinderCount
时,应该停止获取ObjectDisposedException
,您的解释很难理解。张贴代码将是有益的。