2011-09-13 12 views
4

(プレスカンファレンスのPRO:ASP.NET MVCフレームワーク3 - アダム・フリーマンとスティーブン・サンダーソンによって - 第三版)Entity Frameworkのトラブル - ASP.NET 4 MVC 3 - SportsStoreプロジェクト

(ヘッドアップとして

私は298ページまでの本をよく読んできました。(私はSQL Expressを使用しています)私はヒットしました。 Visual Studio 2010(SP1)でソリューションをコンパイルして実行しようとすると困る。

問題は、私のSportsStore.DomainプロジェクトにConcrete/ORM/folder(これは奇妙です)のADO.NETエンティティデータモデル(.edmxファイル)を追加すると発生します.291ページのブックは、そのファイルは既に存在していたはずです...)

...エンティティデザイナでモデルを更新して、2つの新しいプロパティ(ImageDataとImageMimeType)を含めるように更新します - >コンパイラは例外を以下の場所に投げます:

using SportsStore.Domain.Abstract; 
using SportsStore.WebUI.Models; 
using SportsStore.Domain.Entities; 

namespace SportsStore.WebUI.Controllers { 
    public class ProductController : Controller { 

     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のための概念モデルの種類を見つけることができませんでした」という。 "

.edmxファイルを削除すると、ソリューションは正常にコンパイルされます。 - >もちろん、新しい画像プロパティを使用して画像をデータベースに追加することはできません。理由:製品テーブルと製品クラスの新しい列間の接続がありません。 (私は、Webページ上で(ディスク上の)画像を見つけて選択し、提出することができますが、後でデータベースに何も追加されません)。

本当にどこから始めるべきかわかりません。それが私のプロジェクトの多くを示すのに役立つなら、私は間違いないでしょう。 (それはいつも同じブックのにです。)

(実際SportsStore.Domain.Entities下製品クラスを持つ別のほつれがありました。AdminControllerから「のActionResult編集(...)」メソッドSportsStore下.WebUI.Controllersはバイトなくバイト[]として宣言されている製品のImageDataをプロパティを好きではなかった。私はもちろんのことを修正しました。私は本の正誤表であることを報告すべきか?)

+0

をそれを行うためのより良い方法、誰かが作業バージョンジップアップすることができます私は、ソースが仕事を得ることができませんでしたか?私はうまくコンパイルしているが、Ninjectに問題があるようだ – punkouter

答えて

2

私は同じ問題を抱えていましたが、ここでそれを修正しました。

  1. EDMXファイルを追加しないでください
  2. 更新

何かこのようなEFProductRepository.csでSaveProduct方法:

public void SaveProduct(Product product) 
    { 
     if (product.ProductID == 0) 
     { 
      context.Products.Add(product); 
     } 
     else 
     { 
      Product prod = context.Products.Where(p => p.ProductID == product.ProductID).FirstOrDefault(); 
      prod.Category = product.Category; 
      prod.Description = product.Description; 
      prod.ImageData = product.ImageData; 
      prod.ImageMimeType = product.ImageMimeType; 
      prod.Name = product.Name; 
      prod.Price = product.Price; 
     } 
     context.SaveChanges(); 
    } 

私はこれを行うための最善の方法はないと思いますそれは手作業でマッピングするからです。

EDIT:

public void SaveProduct(Product product) 
    { 
     if (product.ProductID == 0) 
     { 
      context.Products.Add(product); 
     } 
     else 
     { 
      context.Entry(product).State = EntityState.Modified; 
     } 
     context.SaveChanges(); 
    } 
1

を私はまったく同じを持っていました.edmxファイルを完全に取り除くことで問題を解決しました。画像は保存せずに表示されているようです。あなたのdb、コントローラ、およびビューが本の内容と一貫していることを確認してください。

関連する問題