Я, вероятно, собираюсь ответить на свой собственный вопрос, задавая его, но здесь идет ...!
Я исследую, полезно ли переносить части нашего унаследованного приложения в среду 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?
Спасибо!