tengo el siguiente escenariocómo lograr la tabla por clase concreta cuando la clase base es abstracta en nhibernate fluido?
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;}
}
para el mapeo he utilizado este código: -
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();
Por defecto fluidez hará caso de la clase base abstracta que es BaseClass. Pero como en la clase ProcessStep hay ContentElements propiedad que devuelve IList, me estoy haciendo una excepción: - NHibernate.MappingException: Asociación referencias de clase no asignada: BaseClass
Si incluyo la clase base utilizando el IncludeBase (typeof (BaseClass)) funciona bien, pero crea una tabla para clases BaseClass y Derivadas y los registros están vinculados con la relación FK-PK (tabla por subclase). Lo que quiero lograr es tabla por clase concreta. es decir, cada clase derivada tendrá su propia tabla en la que habrá todas las propiedades de clase derivada derivadas de la clase base. ¿Alguna idea de cómo lograrlo?
estoy usando Automatizando así que no tengo ninguna disposición para mapear las clases por separado. – Niraj
puede mezclar automatización con asignaciones personalizadas, para que pueda proporcionar la asignación solo para clases específicas, el resto de las clases se pueden asignar utilizando la automatización. Algo como esto Fluently.Configure (configuración) .Mappings (cfg => {cfg.AutoMappings.Add (....); cfg..FluentMappings.AddFromAssembly (Su ensamblado de mapeo personalizado);}) – Rajeesh