我正在使用Entity framework 6
而我正在使用DBFirst
进行开发。
在数据库中我有以下结构
Table : product category -> ProductCategory(ProductCategoryID, Name ...)
Table : product -> Product ( ProductID, ProductCategoryID , ...)
Table : products in -> ShelfProducts(ShelfID, ProductID, ... )
stock location
在我的模特中我有......
class ShelfProduct
{
...
ShelfID {set;get;}
ProductID {set;get;}
Quantity {set;get;}
...
}
class Product
{
...
string Name {set;get;}
virtual ProductCategory {set;get;}
}
class ProductCategory
{
....
Name {set;get;}
}
我绑定了ShelfProduct
中的datagridview
,我正在获取属性ShelfID
,ProductID
,Quantity
。此外,我可以使用具有DisplayMember
,ValueMember
属性的附加绑定源作为第二级绑定来显示产品名称。但是,当我尝试在datagridview
中显示ProductCategory.Name
我无法做到时。
我找到了一个解决方案,但性能很差。
我的解决方案是直接在Model中添加,在类ShelfProduct中添加一个像这样的getter属性
class ShelfProduct
{
...
ShelfID {set;get;}
ProductID {set;get;}
Quantity {set;get;}
...
CategoryName
{
get
{
using(DBContext db = new DBContext)
{
ProductCategory pc = db.ProductCategories.Find(this.Product.ProductCategory.ProductCateogryID);
return pc.Name;
}
}
}
但性能急剧上升。另外我不能使用int getter直接返回this.Product.ProductCategory.Name
ObjectDisposed
异常。
我该怎么办?任何解决方案?