Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架4.1。从Ids加载导航属性_C#_.net_Asp.net Mvc_Entity Framework 4.1 - Fatal编程技术网

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