ORM (Nhibernate и т. Д.) С устаревшей моделью сущностей - PullRequest
2 голосов
/ 13 июня 2011

Я, вероятно, собираюсь ответить на свой собственный вопрос, задавая его, но здесь идет ...!

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

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

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

Переходя к теме использования ORM.

Мы особо не хотим уходить от Dtos по причинам, указанным выше. Я оценил как Entity Framework 4.1 (сначала код), так и NHibernate 3.1 (свободно) и не могу обойти вопрос о том, как обновить сложный Dto обратно в соответствующие объекты.

, например

Допустим, у меня есть объект Customer и объект Address со следующим CustomerAddress Dto:

class CustomerEntity {
public String ID {get;set;}
public String Name {get;set;}
public String Address1 {get;set;}
public String Address2 {get;set;}
}

Затем я хочу отправить обновленные свойства обратно в базу данных через модели сущностей.

Я дошел до использования AutoMapper для сопоставления CustomerEntity с соответствующими объектами Customer / Address. Однако я вынужден выполнить запрос к базе данных, чтобы получить объекты «клиент / адрес» до того, как будет выполнено обновление.

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

Есть ли способ, которым я могу написать команду для обновления только определенных свойств сущности, или я слишком стараюсь работать против парадигмы ORM?

Спасибо!

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