2016-10-30 9 views
2

モデル:だからEntity Frameworkのコード6+まず複数のモデル

ManufacturersModel.cs

public class Manufacturers 
{ 
    [Key] 
    public int ManufacturerID { get; set; } 
    [Required] 
    [StringLength(100)] 
    public string Name { get; set; } 
    public int AddressID { get; set; } 
    public Address Address { get; set; } 
    [EmailAddress] 
    [StringLength(150)] 
    public string EmailAddress { get; set; } 
    [Phone] 
    [StringLength(20)] 
    public string PhoneNumber { get; set; } 
    public ICollection<Brands> Brands { get; set; } 
} 

BrandsModel.cs

public class Brands 
{ 
    [Key] 
    public int BrandID { get; set; } 
    [Required] 
    [StringLength(100)] 
    public string BrandName { get; set; } 
    [Required] 
    public int ManufacturerID { get; set; } 
    public Manufacturers Manufacturers { get; set; } 
    public ICollection<Products> Products { get; set; } 
} 

のために "作成" ページを作成しようとすると、ブランド、私は2つのフィールド:ブランド名とメーカー名が必要です。ブランド名は、ユーザーが望むものを入力するテキストボックス/エディタになります。依存関係のためにメーカー名が必要なのは、jQuery UIのオートコンプリートドロップダウンであるため、依存関係が満たされることがわかります。しかし、自分の@modelがBrandsかManufacturersかどうかはわかりません。

これは、複数のモデルが必要な可能性のある他のページにも及んでいます。私は、作成したすべてのモデルを含むコンテキストを持っていますが、ページにコンテキストを送信するか、モデルを送信する必要があるかどうかはわかりません。一例として、作成したい別のページは、[商品名] jQuery UIのオートコンプリートドロップダウンとブランド名jQuery UIのオートコンプリートドロップダウンがあります。ブランドはメーカーに関連しています。

ちょうどコードファーストの開発に入るので、私が得ることができるすべてのヘルプとヒントが必要です。どうもありがとうございます。

答えて

1

これらのクラスは、データモデルのように見えます。おそらく、ページの実際のモデル(ビューモデルと呼ばれることもあります)としては使用したくないでしょう。そのページのレンダリングに必要なデータを表すプロパティを持つページ専用のモデルを作成する必要があります。このモデルはデータベースには格納されず、アプリケーションでのみ使用されるモデルです。

あなたのケースでは、このページでは、入力したブランド名の文字列プロパティと、選択したメーカーの整数プロパティを持つモデルを作成します。メーカー選択のデータソースとして機能するキー値ペアのリストであるプロパティを追加することも考えられますが、コントローラの代替アクションメソッドでajaxを使用してそのデータを取得することもできますファンシー。

コントローラは、データモデルからの情報でこのビューモデルを作成する責任があり、保存時にその逆も行います。

これは、Entity FrameworkよりMVCに関する質問によく似ています。

関連する問題