В Fluent NHibernate, как бы я сопоставить следующие модели домена? - PullRequest
1 голос
/ 17 июня 2010

У меня есть пользовательский класс, который выглядит примерно так:

public class User
{
    public virtual int Id { get; set; }

    public virtual long ValueA { get; set; }

    public virtual int? ValueB { get; set; }
}

ValueA автоматически назначается системой.Он используется в поиске, который будет отображаться на UserClass.Однако, если значение для ValueB существует, то поиск для UserClass будет выполнен по-другому.

Прямо сейчас я обращаюсь к нему, чтобы получить пользователя и затем каждый раз выполнять отдельный поиск..

return user.ValueB.HasValue ? Find(user.ValueB.Value) : Find(user.ValueA);

Есть ли способ заставить Fluent NHibernate сделать это для меня, чтобы я мог использовать UserClass в качестве свойства класса User вместо того, чтобы выполнять поиск отдельно?Я думал о ComponentMap, но я не уверен, как сделать так, чтобы он учитывал два возможных значения поиска.

Сейчас единственное другое решение, которое я могу придумать, - это обернуть каждый оператор return в моем классе UserService.назначить пользовательский уровень перед возвратом пользователя, что не является решением, которое я хочу продолжить.

public User Find(long valueA)
{
    // Get the user
    return AssignUserLevel(user);
}

public User AssignUserLevel(User user)
{
    // set the user level of the user
}

1 Ответ

0 голосов
/ 17 июня 2010

Ну, это немного логики, которую NHibernate не может обработать (ValueB переопределяет ValueA), но вы можете заставить его использовать ссылки, а не использовать Ids для поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...