Свободное отображение NHibernate для модели DDD - PullRequest
1 голос
/ 06 мая 2011

Я пытался найти решения проблемы, с которой я сталкиваюсь в настоящее время при отображении модели DDD с использованием Fluent NHibernate.Если кто-то может просто направить меня в правильном направлении, которое будет оценено.

В основном у меня есть этот класс, который я хотел бы отобразить:

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» должна пройти таблицу «B» и таблицу «C» с помощью соединения, прежде чем иметь доступ к столбцу LocationId, который затем можно сопоставить с таблицей Location.

Каков наилучший способ отображения местоположенияобъект в беглом NHibernate?Если есть что-то неясное, пожалуйста, дайте мне знать.

Любая помощь будет оценена?

Заранее спасибо.

1 Ответ

0 голосов
/ 13 мая 2011

Ну, не имея столько информации о вашем домене, я думаю, что UpTheCreek - вы можете смоделировать Location как ValueObject, который расширяет класс A.

Я вижу два варианта. 1, класс A имеет косвенное отношение к Location через LocationRepository, где вы можете получить GetLocationByA (A a)

2, вы моделируете Location как объект Value, который является частью агрегата класса A и загружается через репозиторий A. В зависимости от модели вашего домена и отношений между Location и A, Location загружается на лету или во время конструктора A. Извините за форматирование ниже ...

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