DatagridView第3级嵌套绑定

时间:2017-05-16 06:17:38

标签: c# data-binding datagridview

我正在使用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,我正在获取属性ShelfIDProductIDQuantity。此外,我可以使用具有DisplayMemberValueMember属性的附加绑定源作为第二级绑定来显示产品名称。但是,当我尝试在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异常。

我该怎么办?任何解决方案?

0 个答案:

没有答案