按键加载导航属性

时间:2013-06-20 19:31:21

标签: asp.net-mvc ef-code-first entity-relationship asp.net-mvc-validation

我正在使用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实体的“lookup”选择器/编辑器。

将表单提交给相应的HttpPost Action时,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();

因此,会发生一些模型验证错误。 我需要明确地分配/重新加载Product的Category属性,因为我已经知道CategoryID。

所以我的问题是:

如何在没有额外步骤的情况下强制导航属性通过其Key / ID加载(从而避免ModelState错误)?

我可能会走错方向。任何指导都会有所帮助。

0 个答案:

没有答案