2017-07-10 14 views
0

ASP.NET MVCプロジェクトで使用するコードファーストEF用のPOCOクラスを作成しています。私はthis answerに基づいてフィールドのいずれかのドロップダウンリストを作成しようとしていますが、移行を追加しようとするとEFがエラーになりました。EntityFrameworkはSystem.Web.Mvc.SelectListに満足していません

更新: POCOからSelectListItemsを削除しましたが、同じEFエラーです。 POCOの

関連スニペット:

using System.Web.Mvc; 

public class Organization 
{ 
    [DisplayName("Bank Name")] 
    [Required(ErrorMessage = "Bank Name is required.")] 
    public string AccountBank { get; set; } 

    public IEnumerable<SelectListItem> Banks { get; set; } 
} 

EFエラー:

Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

+0

通常、データベースにはSelectListItemエンティティを格納したくありません。代わりに、Bankエンティティを持ち、SelectListItemsをUIでのみ作成する必要があります。 –

+1

なぜEF POCOにビューロジックを追加していますか? –

+1

'SelectListItem'はUI用です。あなたのデータベースに保存すべきではありませんし、あなたのPOCOにはいけません。データベース(=データモデル=ビジネスモデル)には、ビジネスオブジェクトを格納する必要があります。 UI(ビューおよび/またはコントローラ)は、ビジネスオブジェクトをビューで使用できる形式、つまりselectlistItemsに変換する必要があります。 –

答えて

2

、あなたのプロジェクトに含まSystem.web.mvcためのアセンブリはバージョンが一致しない場合、このエラーが発生します設定ファイルで明示的に定義した番号。バージョンが一致していることを確認してください。

また、ビューのドロップダウンリストから銀行名を取得しようとしていますか?その場合は、モデルの選択リストを作成して不要な複雑さをモデルに追加します。そのリストをビューバックにロードし、選択した値とモデルプロパティを設定する方が良いでしょう。

関連する問題