0

私はEF CFアプローチを使用しており、次のものを持っています:

次のデータ モデル:

public class Category {
    [Key]
    public int CategoryID { get; set; }
    [Required]
    public string CategoryName { get; set; }
    public virtual ICollection<Product> Products { get; set; }
}
public class Product {
    [Key]
    public int ProductID { get; set; }
    [Required]
    public string ProductName { get; set; }
    public virtual Category Category { get; set; }
}

次の DataContect 定義:

public class EFCFContext : DbContext {
    public EFCFContext() : base("EFCFConnection") { }

    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}

このコードの目的は次のとおりです。

ASP.NET MVC 4 アプリケーションがあります。Product エンティティを編集するためのフォームと、Category.CategoryID プロパティにバインドされた Category エンティティの「ルックアップ」セレクター/エディターがあります。

対応する HttpPost アクションにフォームを送信するとき、Product.Category.CategoryName はまだ空です。このスコープには、Category オブジェクトの直接のインスタンスがありません。

//Category cat = new Category();
//cat.CategoryName = "Fake Name";
//context.Categories.Add(cat);
//context.SaveChanges();

EFCFContext context = new EFCFContext();

Product prod = new Product();
prod.ProductName = "Fake Name";
prod.Category = new Category();
prod.Category.CategoryID = cat.CategoryID;

//prod.Category.CategoryName is null. ModelState Error is added.

context.SaveChanges();

その結果、いくつかのモデル検証エラーが発生します。CategoryID は既にわかっているため、Product の Category プロパティを明示的に割り当て/再読み込みする必要があります。

だから私の質問は:

追加の手順を実行せずに、キー/ID によってナビゲーション プロパティを強制的に読み込むにはどうすればよいですか (したがって、ModelState エラーを回避します)。

私は間違った方向に進んでいるかもしれません。どんなガイダンスも役に立ちます。

4

0 に答える 0