0
 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..

4

1 回答 1

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

于 2013-04-08T20:39:01.677 回答