解析域对象的数据映射器的最常用解决方案是什么

时间:2011-06-22 21:28:47

标签: c# domain-driven-design datamapper abstraction

天儿真好, 我试图对一个主题进行搜索,但至少还没找到任何东西。

我有一个实现接口IEntity的3个域对象。我想构建一个通用的数据映射器层来对IEntity进行创建,更新,删除操作。问题是每个具体实体都保存在自己的表中,因此我需要有3个具体的映射器来处理它。 然而,客户端对具体对象一无所知 - 它只知道IEntity abstration。显然,我不希望具体对象知道有关映射器的任何信息。

所以似乎应该有一种方法让客户端获得正确类型的映射器。在这种情况下会使用服务定位器模式吗?

类似的东西:

public IEntityDataMapper GetMapper(IEntity entity)

实现这一目标的其他一些方法?我的域名模型的标志首先是否有点错误?

我想要完成的例子: (客户代码)

IEntityMapper mapper; 
IEntity abstractEntity; 

mapper.Update(abstractEntity);

每个实体的更新背后的逻辑可能非常不同。

2 个答案:

答案 0 :(得分:0)

我不确定我到底知道你在找什么,但听起来像是Automapper的情况。

http://automapper.codeplex.com/

P.S。我假设您正在使用.Net ...但我猜您从未指定...

答案 1 :(得分:0)

我不清楚你想做什么,或者 - >但是你熟悉ORM的概念,例如NHibernate,你试图将这些entites映射到关系数据库吗? 您可以使用简单的NHibernate会话进行抽象:

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

前提是您将实体映射到数据库......