Лучший способ обработки просмотров - PullRequest
1 голос
/ 15 февраля 2012

Я хочу начать этот новый проект с наилучшей возможной практикой.У меня есть много таблиц, которые связаны между собой.Пример:

Person
- ID
- FirstName
- LastName

User
- ID
- PersonID
- AddressID

Address
- ID
- Line1
- Line2

Очевидно, мне придется использовать UserView представление, чтобы быть эффективным в приложении.Представление сведет эти три таблицы вместе.

Теперь, когда кто-то вносит изменения в пользователя, мне придется запросить все три таблицы по отдельности, внести изменения, а затем обновить.

private void updateUser(UserView userView)
{
   using (var context = getNewContext()
   {
      var person = context.Person.first(c => c.ID == userView.PersonID)
      person.FirstName = userView.FirstName;
      person.LastName = userView.LastName;
      context.SaveChanges();

      var user = context.User.first(c => c.ID == userView.UserID)
      //and so on for the 3 tables
   }
}

Должен быть более эффективный способ обновления таблиц!Вы знаете какой-нибудь трюк?

1 Ответ

1 голос
/ 15 февраля 2012

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

var user = context.User.Include("Person").Include("Address").First(c => c.ID == userView.UserID);
user.Person.FirstName = userView.FirstName;
user.Person.LastName = userView.LastName;
user.Address... // etc.

Если вы используете Linq2Sql, вы должны использовать DataLoadOptions. сообщение в блоге , объясняющее разницу между EF и Linq2Sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...