2010-02-05 107 views
0

访问外键值(INT)我只花了3-4个小时试图检索使用LINQ to实体和存储过程的外键值。任何意见非常感谢。在实体框架

public JsonResult GetEvents(double? start, double? end) 
    { 
     AnoEntities _dbAno = new AnoEntities(); 

     var events = _dbAno.Events_GetByDateRange(fromDate, toDate); 

     var eventList = from e in events 
         select new 
         { 
          id = e.id, 
          title = e.title, 
          className = e.event_types.type.ToString() 
         }; 

     return Json(eventList.ToArray()); 
    } 

type_id是我试图达到的外键值。我无法得到它,所以出现在实体数据模型中,我似乎无法得到它。 e.event_typese.event_typesReference都为null所以像e.event_typesReference.EntityKey.EntityKeyValues.First()。Value.ToString()不工作。

谢谢!

回答

1

我没有在even_types上看到任何.Include方法或Load方法,我假设你从_dbAno.Events_GetByDateRange(fromDate,toDate)返回IEnumerable。就像Craig在评论中指出的那样,如果GetByDateRange的返回类型是IQueryable,那么您将会投影并且EF应该为您加载。

在实体框架1.0的隐式懒加载不支持开箱即用

只是一个提醒。您需要手动加载Load()的event_types或在ObjectQuery上使用Include方法。

+1

他突出的,所以预先加载(含),如果'events'的类型是IQueryable的''是没有必要的。很难多说没有看到类型和他的模型架构。但投影时不需要加载,显式加载和延迟加载。 – 2010-02-05 02:26:37

+1

感谢克雷格,这是一个很好的观点。我的回答假设他正在返回IEnumerable 。 – jfar 2010-02-05 02:32:17

+0

非常感谢jfar和克雷格! – 2010-02-05 07:03:43