Вот мой сценарий. Используя NH, я пытаюсь отобразить те же 2 класса, Пользователь и Компанию (которые наследуют от Стороны), в одну и ту же таблицу Сторон И сопоставить их в свои собственные таблицы Пользователей и Компаний.Как я понимаю, способ сделать это - использовать опцию имени сущности.
Проблема в том, что даже при определении сопоставления только один раз, я получаю исключение, говорящее о том, что я пытался сопоставить тип без сопоставления,Мои сопоставления: Party is abstract
public PartyMapping() : ClassMapping<Party>
{
Table("Parties");
Id(d => d.Id, m => m.Generator(Generators.Assigned));
EntityName("SomePartyName");
Discriminator(d=>
{
d.Column("PartyType");
d.Force(true);
d.Insert(true);
d.NotNullable(true);
d.Type(NHibernate.NHibernateUtil.String);
});
Property(d => d.SaleAmountUSD);
}
public UserMapping() : SubclassMapping<User>
{
EntityName("SomeUserName");
DiscriminatorValue("User");
}
public CompanyMapping() : SubclassMapping<Company>
{
EntityName("SomeCompanyName");
DiscriminatorValue("Company");
}
Компиляция сопоставления завершается с сообщением Невозможно расширить не отображенный класс: Party
Если я опущу EntityName ("SomePartyName");из моего сопоставления партии, тогда компиляция сопоставления ОК, но, очевидно, я не могу также сопоставить сущность партии с другой таблицей.
Я думаю, мне нужно найти способ указать, дляотображения производных классов, какое имя сущности суперкласса использовать.Но я не понял, как ..