Хорошо, название не говорит слишком много, извините. По сути, это вопрос архитектуры о приложении, которое может иметь несколько серверных баз данных (ну, здесь «база данных» используется свободно, так как оно может означать что угодно, от MSSQL до файлов XML и IList в памяти), в основном с использованием шаблона репозитория.
У меня есть набор POCO, которые по сути просто служат объектом передачи данных (DTO) и поэтому ничего не делают, кроме переноса данных. К сожалению, я вижу необходимость в украшении их Атрибутами, т.е. для использования с определенными ORM или даже для использования с XmlSerializer. Это означает, что они теперь в некоторой степени связаны с уровнем базы данных и, на мой взгляд, больше не являются простыми POCO.
Из того, что я вижу, мне теперь пришлось бы дублировать эти DTO-классы, чтобы у меня был один класс для конкретной базы данных с атрибутами и всем необходимым, а также вторая версия, которая является общей для моего приложения. Моя модель должна была бы преобразовать их (где можно использовать что-то вроде AutoMapper )
Это все еще "кажется странным", так как я по сути дублирую все свои классы DTO, но существование картографов Object-to-Object, кажется, указывает на то, что это совершенно нормально. Кроме того, похоже, что это копирует подход ADO.net, в то время как есть общая часть (вплоть до набора данных) и специфичная для базы данных часть.
Это правильно? Или есть другой подход?