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 を自分で作成する必要があり、例外がスローされました。この問題を確認する方法がわかりません..

4

1 に答える 1

0

私はこの本(Pro Asp.Net MVC 3 Framework)も読んでいて、同じエラー/問題を見つけました。

作成者が使用ObjectContextから「DbContext」に切り替えて (またはその逆)、例をクリーンアップしなかったようです。前者は EntityFramework 4.0 の古い API で、後者は 4.1 の API です。 DbContextも単なるラッパーでObjectContextあるため、同じことを行います。

第 10 章のコード例を見ると、彼が Entity Data Model (.edmx) を使用してデータベースとモデルを接続していることがわかりますが、それまでの本では「コード ファースト」アプローチを使用していました。とDbContext

彼がフォルダについて言及したのは第 9 章のこの 1 つのセクションだけであるという事実とConcrete/ORM、この .edmx モデルは、これが本の前の反復から取り残されたものであるという考えにさらなる証拠を与えます。

要約すると、この .edmx モデル ファイルは必要なく、概念モデルを更新する必要もありません。Productフレームワークは、コード内のモデルの一部をデータベース内の Product テーブルに接続できる必要があります。

いくつかの洞察を提供する関連する質問があります: Using DbContext and Database First in EF 4.1

于 2013-04-08T20:39:01.677 に答える