2015-08-08 1 views
2

Когда мое представление визуализируется, мне нужно будет получить данные о местоположении (массив длинных/лат-координат), исходящий из моей модели просмотра. Я буду использовать Javascript для чтения этих значений и построения их на карте Google. В настоящее время я получаю результаты, которые содержат данные о местоположении, но я не уверен, как эффективно получить данные о местоположении из результатов и поместить их в другое свойство в моей модели представления. Должно ли это быть с нетерпением загружено, лениво загружено и т. Д.? Я как бы новичок в Linq и EF.Будет ли загружать запрос Linq to Entity до того, как мой взгляд замедлит работу?

У меня есть модель представления, которая выглядит примерно так

public class YogaSpaceListViewModel 
{ 
    public IPagedList<YogaSpaceResults> YogaSpaces { get; set; } 
    // I need to put all LocationPoints data from the query results into a collection here 
    //public some collection here LocationResults { get; set; } 
} 

FYI IPagedList наследуется от IEnumerable.

Когда я приведу результаты, вот мой запрос. Я помещал результаты в анонимный тип «YogaSpaceResults», и вы можете видеть, что он содержит данные «LocationPoints», которые я хочу сохранить в моей модели viewmodel.

var events = (from u in context.YogaSpaceEvents 
    orderby u.YogaSpace.Address.LocationPoints.Distance(myLocation) 
    where 
     (u.DateTimeScheduled >= classDate) && 
     (u.YogaSpace.Address.LocationPoints.Distance(myLocation) <= 8047) 
      select new YogaSpaceResults 
      { 
       LocationPoints = u.YogaSpace.Address.LocationPoints, 
       Title = u.YogaSpace.Overview.Title, 
       Summary = u.YogaSpace.Overview.Summary, 
       Date = u.DateTimeScheduled 
      }).ToPagedList(page, 10); 

и на мой взгляд, я делаю что-то вроде этого

@foreach (var space in Model.YogaSpaces) 
    { 
     <div> 
      <h4>@space.Title</h4> 
      <div> 
       @space.Summary 
       <br/> 
       @space.Date 
      </div> 
     </div> 
     <hr /> 
    } 

ответ

1

Я не уверен, как эффективно получить данные о местоположении из результатов и поместить их в другую собственность в моя модель взгляда. Должно ли это быть с нетерпением загружено, лениво загружено и т. Д.?

они уже загружены из БД при выполнении ToPagedList, так что вам не нужно загружать их и все, что будет сделано в памяти

вы можете иметь что-то совсем простое, как

public IEnumerable<LocationPoint> LocationResults { 
    get{ 
     return YogaSpaces.Select(ys => ys.LocationPoints) 
    } 
} 

Кстати, кажется, вы уже эффективно извлекаете данные из БД (вы проектируете необходимые свойства в своей модели просмотра, используя один запрос, который намного эффективнее, чем ленивая загрузка или загрузка). Таким образом, вы можете легко сохраняйте свой текущий код.

Обратите внимание, если вы обнаружите, что ваш запрос слишком медленно, может быть, пространственный индекс отсутствует для этого условия

(u.YogaSpace.Address.LocationPoints.Distance(myLocation) <= 8047) 

 Смежные вопросы

  • Нет связанных вопросов^_^