我正在使用 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 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();
因此,会出现一些模型验证错误。我需要明确分配/重新加载产品的 Category 属性,因为我已经知道 CategoryID。
所以我的问题是:
如何在没有额外步骤的情况下强制导航属性按其键/ID 加载(从而避免 ModelState 错误)?
我可能走错了方向。任何指导都会有所帮助。