у меня следующий сценарий
public abstract class BaseClass
{
public virtual int Id {get; set};
public virtual string Name {get; set;}
}
public class FirstSubClass : BaseClass
{
//properties and behaviour here
}
public class SecondSubClass : BaseClass
{
//properties of SecondSubclass Here
}
public class ProcessStep
{
public virtual IList<BaseClass> ContentElements {get; set;}
}
для отображения я использовал следующий фрагмент кода: -
this._sessionFactory =
Fluently.Configure().Database(SQLiteConfiguration.Standard
.ConnectionString(@"Data Source=SqliteTestSqlDataAccess.s3db; Version=3; New=True; Pooling=True; Max Pool Size=1;"))
.Mappings(m => m.AutoMappings.Add(AutoMap.Assembly(assemblyWithDomainClasses).Conventions.Add(DefaultCascade.All())))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
По умолчанию свободный будет игнорировать абстрактный базовый класс, который является BaseClass.
Но так как в классе ProcessStep есть свойство ContentElements, которое возвращает IList , я получаю исключение: -
NHibernate.MappingException: ассоциация ссылается на несопоставленный класс: BaseClass
Если я включаю базовый класс, используя IncludeBase (typeof (BaseClass)), то он работает нормально, но создает таблицу для классов BaseClass и Derived, а записи связываются с помощью отношения FK-PK ( таблица для подкласса *). 1014 *).
То, чего я хочу достичь, это таблица для конкретного класса . то есть каждый производный класс будет иметь свою собственную таблицу, в которой будут все свойства производного класса + свойства базового класса.
Есть идеи, как этого добиться?