Автоматическое сопоставление свойства, тип которого Interface - PullRequest
2 голосов
/ 02 июня 2009

У меня есть следующий класс

class MCustomer : DomanEntity
{
    public MCustomer()
    {       
    }

    public virtual iCustomerEntity CustomerDetials { get; set; }
    public virtual SolicitationPreferences SolicitationPreferences { get; set; }
}

public interface iCustomerEntity
{
    Contact Contact { get; set; }
}

public class PersonEntity: DomanEntity, iCustomerEntity
{
    public PersonEntity()
    {
        Intrests = new List<Intrest>();
        Children = new List<PersonEntity>();
    }

    public virtual Contact Contact { get; set; }
    public virtual DateTime BirthDate { get; set; }
    public virtual IList<Intrest> Intrests { get; set; }    
    public virtual PersonEntity Spouse { get; set; }    
    public virtual IList<PersonEntity> Children { get; set; }
}

Когда я использую беглое автоматическое сопоставление NHibernate, я получаю эту ошибку:

NHibernate.MappingException: ассоциация из таблицы MCustomer ссылается на не отображенный класс: Calyx.Core.Domain.CRM.iCustomerEntity

Как настроить свойство в моей доменной модели с типом интерфейса?

Ответы [ 3 ]

1 голос
/ 10 июня 2009

Я не думаю, что вы можете сделать это.
Когда вы пытаетесь загрузить MCustomer (session.Load<MCustomer>(id)), NHibernate будет знать только, что вы хотите получить MCustomer, который имеет iCustomerEntity. Он не знал бы, какую реализацию (PersonEntity или CoderEntity?) Использовать. Как узнать, какое сопоставление использовать для извлечения данных для iCustomerEntity?

0 голосов
/ 14 октября 2009

https://www.hibernate.org/hib_docs/nhibernate/html/inheritance.html

Это стандартный шаблон Nhibernate. Я пытаюсь сделать то же самое

0 голосов
/ 21 июня 2009

Выглядит как «любое» отображение для меня. Вы должны посмотреть на это. И, насколько я понимаю, FNH пока не поддерживает это.

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