实体框架错误:找不到概念模型类型

时间:2012-06-07 09:12:40

标签: entity-framework entity-framework-4

 public ViewResult List(string category,int page = 1)
    {
        ProductsListViewModel viewModel = new ProductsListViewModel
        {
            Products = repository.Products
            .Where(p => category == null || p.Category == category)
            .OrderBy(p => p.ProductID)
            .Skip((page - 1) * PageSize)
            .Take(PageSize),

            PagingInfo = new PagingInfo
            {
                CurrentPage = page,
                ItemsPerPage = PageSize,
                TotalItems = category == null?repository.Products.Count():repository.Products.Where(e => e.Category == category).Count()
            },

            CurrentCategory = category
        };
        return View(viewModel);
    }

它抛出一个异常,说“找不到SportsStore.Domain.Concrete.ORM.Product的概念模型类型。” 我想这与我手动添加的SportStore.edmx文件有关,但是这本书只是提到了这个文件,就好像它已经存在一样,实际上并非如此。所以我必须自己创建ORM,然后抛出异常。我不知道如何检查这个问题,thx ..

1 个答案:

答案 0 :(得分:0)

我也阅读了这本书(Pro Asp.Net MVC 3 Framework)并发现了相同的错误/问题。

似乎作者从使用ObjectContext切换到'DbContext'(或者反过来)并没有清理他的例子。前者是来自EntityFramework 4.0的旧API,后者是来自4.1的API。 DbContext也只是ObjectContext的包装器,所以他们做同样的事情。

如果查看第10章的代码示例,您可以看到他使用实体数据模型(.edmx)来建立数据库和模型之间的连接,而在整本书中,他使用了“代码 - 第一个'与DbContext接近。

事实上,第9章中的这一部分是他唯一一次提到Concrete/ORM文件夹和这个.edmx模型,这进一步证明了这是本书前一次迭代留下的内容。

总结:您不需要此.edmx模型文件,您无需更新概念模型。该框架应该能够将代码中Product模型的各个部分连接到数据库中的Product表。

这是一个可能提供一些见解的相关问题: Using DbContext and Database First in EF 4.1