Я разработал довольно небольшое asp.net MVC-приложение, использующее шаблон репозитория и Linq to Sql. Теперь я хотел бы получить доступ и обновить одни и те же данные с помощью Entity Framework, однако у меня возникли проблемы с пониманием правильности моего синтаксиса для связей таблиц в Entity Framework.Entity Framework - Как обрабатывать отношения таблиц?
Скажем, я извлекаю строку данных для пользователя, и я также хотел бы получить ассоциированный бизнес пользователя (внешний ключ в таблице пользователя). Сейчас я делаю что-то вроде этого:
using (MyDatabaseEntities context = new MyDatabaseEntities())
{
User user = db.User.FirstOrDefault(u => u.Users.UserId == userId);
if (!user.BusinessReference.IsLoaded)
{
user.BusinessReference.Load();
}
return user;
}
Из примеров, которые я видел, я должен сделать что-то вроде этого, чтобы получить доступ к данным бизнес-таблицы:
foreach (Business business in user.BusinessReference)
{
var b = business;
ViewData["BusinessName"] = b.BusinessName;
}
я буду об этом право путь? Любые советы будут очень признательны.
Так что, если я использую «.Include», я не могу включить несколько таблиц или отношений? Например: Пользователь user = db.User.Include («Бизнес»). Включить («UserRoles»). FirstOrDefault (u => u.UserId == userId); – Victor
Обратите внимание, что Include не может загружать бизнес (Include - это «подсказка»/запрос, а не команда), и вам абсолютно необходимо сохранить код IsLoaded/Load. Кроме того, вы можете складывать несколько включений. –
Итак, если я использую Include, в моем контроллере я могу теперь использовать что-то вроде этого: user.Business.BusinessName.ToString(); после загрузки моего объекта пользователя. Зачем мне также использовать код IsLoaded/Load? – Victor