0

私は webforms プロジェクトを持っており、ASP.NET 4.5 で新しいモデル バインディングを使用しています。ユーザーが関連エンティティを選択できるようにする DropDownList を含むページに、強く型付けされた FormView があります (Product -> Category を考えてください)。

これを設定して、InsertMethod で関連エンティティ (たとえば、Product.Category) に直接アクセスできるようにする方法はありますか? 関連するエンティティのいくつかの検証ルールを確認する必要があります。これを行う唯一の方法は、DropDownList を設定して関連するレコードの Id を返し、それをデータベースから取得することでした。それはかなり非効率的なようです。

編集:くそー、誰もハァッ!? それは、新しいテクノロジーを早期に採用することで得られるものです。:D

4

1 に答える 1

0

私は MVC で同じ問題を抱えていました。私が見つけた最良の解決策は、モデルで ForeignKey データ注釈を使用することでした。この方法では、関連するオブジェクトの ID のみを挿入し、後でオブジェクトを取得できました。次に例を示します。

public class Product {
    public int ProductId { get; set; }
    public string Name { get; set; }
    // Add this field so I can add the entity to the database using 
    // category id only, no need to instantiate the object
    public int CategoryId { get; set; }

    // Map this reference to the field above using the ForeignKey annotation
    [ForeignKey("CategoryId")]
    public virtual Category Category { get; set; }
}

public class Category {
    public int CategoryId { get; set; }
    public string Name { get; set; }
}

さて、最後に WebForms を使用してから何年も経っているので、カテゴリ リストを DropDownList にバインドする方法がよくわかりません。おそらく次のようなものです。

<asp:DropDownList ID="CategoryId" SelectMethod="GetCategories" runat="server" />

また、Create メソッドまたは Update メソッドで製品を取得すると、CategoryId プロパティが適切に属性付けされた状態で提供され、EF のコンテキストを保存するだけで済みます。幸運を。

于 2013-01-14T16:49:14.500 に答える