C# 实体框架4.1。从Ids加载导航属性
我在C# 实体框架4.1。从Ids加载导航属性,c#,.net,asp.net-mvc,entity-framework-4.1,C#,.net,Asp.net Mvc,Entity Framework 4.1,我在OrderItem上有一系列类似的属性: public virtual Frame Frame { get; set; } [ForeignKey("Frame")] public int? FrameId { get; set; } 我有一个这样的控制器: public ActionResult CostOptions(OrderItem oi) 我正在使用上面的模型绑定在oi上设置Ids,现在有没有办法从Ids自动加载导航属性?
OrderItem
上有一系列类似的属性:
public virtual Frame Frame { get; set; }
[ForeignKey("Frame")]
public int? FrameId { get; set; }
我有一个这样的控制器:
public ActionResult CostOptions(OrderItem oi)
我正在使用上面的模型绑定在
oi
上设置Ids,现在有没有办法从Ids自动加载导航属性?是否需要插入实体才能执行此操作?订单项必须是EF创建的代理,以便加载相关id指向的导航属性。您当前的实现不允许这样做,因为MVC model binder创建了实例OrderItem
public ActionResult CostOptions()
{
// creates instance of the proxy
var oi = db.OrderItems.Create();
if (TryUpdateModel(oi))
{
// new entity has to be added before retrieving lazy loaded prop
db.OrderItems.Add(oi);
// lazy loaded property
var frame = oi.Frame;
}
}
谢谢,但就我而言,oi还不在数据库中。“如果可能的话,我不想在这个阶段插入它。”汤姆编辑了我的答案。在访问导航属性之前,您需要使用
create
方法创建实例,并将其添加到DbSet
。