Какое наиболее распространенное решение для разрешения отображения данных для объекта домена - PullRequest
0 голосов
/ 23 июня 2011

G'day, Я пытался выполнить поиск по теме, но не смог ничего найти, по крайней мере, пока.

У меня есть 3 доменных объекта, которые реализуют интерфейс IEntity. Я хотел бы создать общий слой отображения данных для выполнения операций создания, обновления, удаления в IEntity. Проблема в том, что каждая конкретная сущность сохраняется в отдельной таблице, поэтому мне кажется, что мне нужно иметь 3 конкретных картографа для решения этой проблемы. Однако клиент ничего не знает о конкретных объектах - он знает только об абстракции IEntity. И, очевидно, я не хочу, чтобы конкретные объекты знали что-либо о картостроителях.

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

Что-то вроде:

public IEntityDataMapper GetMapper(IEntity entity)

Какие еще способы достичь этой цели? Является ли случайно какой-то признак того, что моя модель предметной области вначале несколько ошибочна?

Пример того, что я пытаюсь выполнить: (код клиента)

IEntityMapper mapper; 
IEntity abstractEntity; 

mapper.Update(abstractEntity);

Логика обновления для каждой сущности может сильно отличаться.

Ответы [ 2 ]

0 голосов
/ 25 июня 2011

Мне не совсем понятно, что вы хотите сделать -> но вы знакомы с концепцией ORM, например, NHibernate, вы пытаетесь отобразить эти объекты в реляционную базу данных?У вас могут быть абстракции, подобные тем, которые есть в простом сеансе NHibernate:

IEntity someEntity = new Customer("John", "Doe");
session.Save(someEntity);

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

0 голосов
/ 23 июня 2011

Я не уверен, что точно понимаю, что вы ищете, но это звучит как случай для Automapper.

http://automapper.codeplex.com/

ps Я предполагаю, что вы используете.... но я полагаю, вы никогда не указали ...

...