【发布时间】:2012-10-04 14:43:17
【问题描述】:
我有一个数据库如下:
我正在使用 EF 并尝试获取对象。在正常情况下,从数据库中选择 PRODUCT 实体后,我可以访问 PRODUCT 实体的 ACCESSLEVEL 实体,如下所示:
在选择时,我使用 INCLUDE(注意:下面的代码可以正常工作!)
//In a method located in some BL layer
public ProductCollection Load()
{
ProductCollection Result = new ProductCollection(); //Derived from List
using (var Context = base.Entities)
{
collection = from ItemProduct in Context.Product
.Include("AccessLevel");
return Result.AddRange(collection);
}
}
//In page load in aspx.cs file
foreach(var product in BL.Load())
{
Response.Write(product.AccessLevel.Name);
}
但是,在这里当我做下面的事情时它不起作用!
//In a method located in some BL layer
public ProductCollection Load()
{
ProductCollection Result = new ProductCollection(); //Derived from List
using (var Context = base.Entities)
{
collection = from ItemProduct in Context.Product
.Include("AccessLevel")
.Join(Context.Product_Category_Map.Where(c => c.ProductCategoryId == 3),
product => product,
map => map.Product,
(product, map) => product
));
;
return Result.AddRange(collection);
}
}
//In page load in aspx.cs file
foreach(var product in BL.Load())
{
//I Get Exception here and cannot react the included object
Response.Write(product.AccessLevel.Name);
}
例外是:
ObjectContext 实例已被释放,不能再使用 用于需要连接的操作。
我最终想要的是通过给定的 ProductCategory Id 获取产品。
我该怎么做?
提前致谢。
【问题讨论】:
标签: c# asp.net entity-framework-4 relationships