Стремительная загрузка с Entity Framework и Asp .net mvc (из фона рельсов) - PullRequest
1 голос
/ 04 декабря 2009

У меня есть несколько таблиц, которые ссылаются на одну и ту же таблицу. Например:
У человека есть адрес.
У бизнеса есть адрес.

При использовании моделей я хотел бы сделать это в контроллере:

person.Address.Zip
business.Address.Zip

Я из рельсового фона, где я могу просто объявить отношения и использовать все вышеперечисленные функции. Принудительно загружать адрес, когда я получаю объект (лицо или бизнес).

Я новичок в сущности, и я борюсь с тем, как добиться этой функциональности. Я не могу включить таблицу в обеих моделях (человек и бизнес). Если я использую шаблон репозитория и добавляю объекты в партиал для класса, то я использую ленивую загрузку.

Я смотрю на это неправильно? Какие-нибудь предложения для образцов, которые я мог бы использовать?

Ответы [ 3 ]

2 голосов
/ 04 декабря 2009

Если вы используете Entity Framework 4.0 с Visual Studio 2010, отложенная загрузка выполняется автоматически.

Если вы используете Entity Framework 1.0, ваша жизнь стала еще сложнее ...

Чтобы загрузить EF1, вы должны использовать метод Include () в ObjectQuery и указать, какие свойства навигации (адрес) Например:

ModelContainer.Persons.Where(@p => @p.Id == 39 ).Include("Address")

Для «ленивой» загрузки вы должны вручную загрузить все ассоциации FK вручную. Например:

var myPeople = ModelContainer.Persons.Where(@p => @p.Id == 39 

if( !myPeople.Address.IsLoaded() )
     myPeople.Address.Load()

Другой вариант - изменить способ генерации типов вашей модели EF1 и включить отложенную загрузку из ворот.

http://code.msdn.microsoft.com/EFLazyLoading

0 голосов
/ 04 декабря 2009

Ранее я создавал модель данных объекта ADO.NET для каждого контроллера.

Теперь я создал одну модель данных для всех таблиц (это не чудовищная база данных). Таким образом, я могу включить таблицы при запросе загрузки.

Если у кого-то есть лучшее предложение. Дай мне знать. Если кто-то знает правильное поведение с большой базой данных, пожалуйста, прокомментируйте. Вы хотите, чтобы один большой файл EDMX представлял базу данных?

0 голосов
/ 04 декабря 2009

В идеале вы должны иметь возможность пройти через объектную модель, чтобы получить большую часть нужных вам данных, начиная со ссылки на текущий объект пользователя.

...