Отключенное поведение Entity Framework при обновлении графа объектов

В настоящее время я работаю с проектом, в котором используются следующие технологии.

ASP.net MVC - presentation Layer Data Service Layer - (WCF) Data Transfer Objects(DTO) Layer with Auto Mapper Domain Layer (POCO, Code First Entity Framework) Repository Layer + Entity Framework 4.3 + DbContext.

Мы используем DTO для преобразования объектов домена наоборот с помощью автоматического сопоставления и отправки во внешний интерфейс с помощью службы WCF.

Кроме того, мы создаем DBContext для каждого запроса на уровне WCF для каждого запроса, и наш контекст службы WCF создается с помощью функции «За вызов» и «Без отслеживания» в клиентских DTO и полностью отключен.

Также у нас есть следующий граф объектов.

public class User : BaseEntity
    {
        public virtual Identity Identity { get; set; }

        public string UserName { get; set; }

        public string Password { get; set; }

        public int IdentityId { get; set; }

        public virtual IList<Group> Groups{ get; set; }
    }



 public class Identity : BaseEntity
    {
        public string FirstName { get; set; }

        public string LastName { get; set; }

        public virtual IList<Email> Emails { get; set; }

        public virtual IList<PhoneNumber> PhoneNumbers { get; set; }
    }

Наша структура Dto больше похожа на доменную.

Мои вопросы:

Когда дело доходит до обновления графа объекта Например:UpdateUser(User user); Каков наилучший подход с Entity Framework?

Теперь мы используем отдельные функции для сохранения навигационных данных, например:UpdateEmail(userId, Email)(сохраняет только примитивные данные, а не отношения); так что он делает много вставок и обновлений в базе данных, когда мы рассматриваем один UnitOfWork.

Текущая реализация следующим образом

  public void UpdateUser(User user)
    {
    UpdateEmail(user.userId, user.Idenity.Emails);
    UpdatePhone(user.userId, user.Identity.PhoneNumbers);

    etc.............

    UpdateUser(user);
    UnitOfWork.Commit();// Calling DbContext.SaveChanges();
    }

Есть ли какой-либо шаблон или лучшие практики, которые мы можем использовать с Entity Framework в описанной выше ситуации с отключенным графом объектов?

Ответы на вопрос(3)

Ваш ответ на вопрос