我有一個流利的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