DDD模型的流畅NHibernate映射

时间:2011-05-06 02:22:55

标签: .net fluent-nhibernate domain-driven-design mapping

我一直在尝试寻找解决我目前使用Fluent NHibernate映射我的DDD模型的问题的解决方案。如果有人能够把我放在正确的方向,那将是值得赞赏的。

基本上我有这个课我想要映射:

public class A : EntityObject
{
    //assuming some other attributes have been mapped properly

    public virtual Location MyLocation { get; private set; }
}

public class Location : EntityObject
{
    public virtual string Name { get; private set; }
}

public Class AMap : ClassMap<A>
{
    //????  How to map the Location
}

从数据库pov,表“A”与表“位置”没有直接关系。表“A”必须在访问LocationId列之前使用连接通过表“B”和表“C”,然后我可以映射到Location表。

在Fluent NHibernate中映射Location对象的最佳方法是什么?如果有任何不清楚的地方,请告诉我。

任何帮助都会受到赞赏吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

没有关于你的域的那么多信息我觉得像UpTheCreek - 你可以将Location建模为扩展A类的ValueObject。

我看到两个选项。 1,A类通过LocationRepository与Location有间接关系,你可以在这里GetLocationByA(A a)

2,您将Location定义为Valueobject,它是A类聚合的一部分,并通过A的存储库加载。根据您的域模型以及位置和A之间的关系,位置即时加载或在A的构造函数中加载。抱歉下面的格式...

public class AMap : ClassMap<A>
{
    public AMap()
    {
Component(x => x.MyLocation, m =>
                          {
                              m.Map(x => x.Name, "Name");
                          });
    }
}