Допустим, у меня есть абстрактный базовый класс, определенный следующим образом:
public abstract class CompanyBase : EntityBase<CompanyBase>
{
public virtual string Name { get; set; }
public virtual StreetAddress Address { get; set; }
public virtual IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
}
Затем я создаю несколько других классов, производных от этого класса, например:
public class CustomerCompany : CompanyBase
{
// Properties relevant to a customer
}
public class VendorCompany : CompanyBase
{
// Properties relevant to a vendor
}
Каждый производныйкласс имеет свою собственную таблицу - в этом примере CustomerCompany и VendorCompany . CompanyBase таблица отсутствует.
Я настроил автоматическое сопоставление через Fluent NHibernate, игнорируя базовые классы, и все прекрасно работает , за исключением для свойства PhoneNumbers
,Он не отображается в файле hbm при экспорте и не извлекается из базы данных.Кажется, что это просто с видом на эту собственность.Если я добавлю свойство PhoneNumbers
в производный класс, все будет отлично работать.
Я не смог найти в интернете ничего связанного с этим ... кто-нибудь видел это?Есть ли способ обойти это или мне нужно перенести объявление PhoneNumbers
в производные классы (и в результате получится много дубликатов)?
Обновление:
Я принял ответ переопределения ниже, но все же продолжаю утверждать, что автоматическое сопоставление должно учитывать коллекции без переопределений.То, что я в итоге сделал, чтобы решить эту конкретную проблему, - это перейти к единой дискриминированной таблице, а не к таблице на подкласс.Это позволило правильно автоматизировать процесс.