Как получить доступ к вспомогательным свойствам в рамках структуры CTP4? - PullRequest
0 голосов
/ 04 августа 2010

Я довольно новичок в структуре сущностей, но учитывая простой объект, подобный этому:

public class Country
{
    public string Name { get; set; }

    [Key]
    public string Code { get; set; }

    public bool IsPostalCodeRequired { get; set; }

    public ICollection<Province> Provinces { get; set; }
}

, возвращаемый DbContext, свойство Provinces равно нулю.Если я использую метод Include в своем операторе linq для включения провинций, то это работает.Но мне было интересно, есть ли способ загрузить их, когда я на самом деле получаю доступ к собственности?Я знаю, что здесь нужно подумать о производительности, но я просто хочу знать, как это сделать.

Спасибо,

Ответы [ 2 ]

1 голос
/ 06 августа 2010

Крейг все это сказал.Просто хотел сказать, что по умолчанию ObjectContext отключил LazyLoading.Хотя, когда вы создаете новый проект .net 4.0, дизайнер модели явно включает его для вас для проектов .net 4.0.Он отключен, потому что EF необходимо сохранить устаревшее поведение .net 3.5, когда отложенная загрузка была недоступна.Однако, как вы можете заметить, что вы используете Dbcontext, который является новым и не зависит от .net 3.5.Следовательно, LazyLoading будет включен по умолчанию, чтобы дать вам беспроблемный опыт.

1 голос
/ 05 августа 2010
  1. Убедитесь, что ObjectContext.ContextOptions.LazyLoadingEnabled верно.Это значение по умолчанию для нового проекта.
  2. При использовании чистых объектов POCO отложенная загрузка не может работать (подумайте об этом).Таким образом, вы можете использовать прокси POCO.Опять же, это значение по умолчанию, но для выполнения отложенной загрузки с прокси-серверами POCO необходимо, чтобы все свойства отношений были объявлены virtual, а ваши - нет.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...