我有一个流利的nhibernate表每个类层次结构映射的问题。我有2个域对象,容器(基类)和专辑(子类)。相册只包含一个构造函数。来自Sharp Architect的EntityWithTypedId中的容器dervies。 EntityWithTypedId提供Guid类型的键(名称为ContainerId)。流利的NHibernate表每个类层次结构多个表映射问题
public class Container : EntityWithTypedId<Guid>
{
public Container()
{
}
protected Container(Guid userId)
: this()
{
UserId = userId;
}
public virtual int Type { get; set; }
public virtual Guid UserId { get; set; }
}
public class Album : Container
{
public Album()
: base()
{
Type = (int)ContainerType.Album;
}
public Album(Guid userId)
: base(userId)
{
Type = (int)ContainerType.Album;
}
}
我希望所有的域对象都保存在一个名为“Containers”的表中。我有一个容器的映射文件:
public class ContainerMap : IAutoMappingOverride<Container>
{
public void Override(AutoMap<Container> mapping)
{
mapping.DiscriminateSubClassesOnColumn<int>("Type");
}
}
NHibernate假定使用2个表。表“Containers”按预期映射,但NHibernate假设另一个表“Album”仅包含一个名为“Container”的Id,该Id等于表“Containers”中的ContainerId。我如何更改映射,以便不需要表“专辑”?
如果我提供了一个映射类专辑我得到即使专辑映射是空的映射错误: FluentNHibernate.Cfg.FluentConfigurationException:创建一个会话使用了无效的或不完整的配置。请参阅PotentialReasons集合和InnerException以获取更多详细信息。
数据库未通过数据库方法配置。
----> System.ArgumentException:'FluentNHibernate.AutoMap.AutoMap'类型的对象
1[Core.Album]' cannot be converted to type 'FluentNHibernate.AutoMap.AutoMap
1 [Core.Container]'。
谢谢!
/Marcus