在Entity Framework中查找具有继承的对象

时间:2017-01-07 03:29:56

标签: c# entity-framework inheritance

我有数据库模型,如下面的屏幕截图所示。

enter image description here

我希望在包含派生属性的页面中显示产品(如果它是一本书或pegi,则为isbn,如果它是游戏的话)。从Web层检索产品的最佳方法是什么?现在我有一个检索产品的方法FindProduct(long productId),但我怎样才能得到它的派生实例? (我有ProductDaoBookDaoGameDao)谢谢。

public Product FindProduct(long productId)
{
    return ProductDao.Find(productId);
}

1 个答案:

答案 0 :(得分:1)

此示例显示了在使用ASP.NET MVC/Core的情况下如何实现此功能    如果您不想使用dynamic,则可以在is..as链上替换它。

public class ProductController : Controller
{
  public ViewResult Product(long productId) 
  {
      var product = FindProduct(productId);
      var productView = GetRelevantProductView((dynamic)product);
      return productView; 
  }

  private void GetRelevantProductView(Book book)
  {
    return View("BookView", book);
  }

  private void GetRelevantProductView(Game game)
  {
    return View("GameView", game);
  }

}