一般来说,我是 Fluent Nhibernate (FNH) 或 NHibernate (甚至是 ORM) 的新手。我有一个用于学习 FNH 的宠物项目,但我被困住了,这看起来像是一个设计问题。它是一个基本的图书馆管理系统,我有书籍、用户、booksize(!) 等对象。例如,我有一个 BookSize 类和它的管理器 BookSizesManager,其中包含 BookSize 对象的列表。谁能告诉我如何为他们两个创建 ClassMap,这样我的数据库(出于测试目的,比如 SQLite 数据库)将只有一个名为“BookSizes”的表,并列出 BookSizeManager 中的所有 BookSize 对象?
我目前的实现是遵循和有缺陷的,因为它产生了两个表 1. BookSize 2. BookSizes(来自 BookSizeManager Map)。
我的 BookSize 类
public class BookSize
{
public virtual string ID { get; set; }
public virtual string Name { get; set; }
public virtual double Length { get; set; }
public virtual double Width { get; set; }
}
对应的ClassMap
public class BookSizeMap : ClassMap<BookSize>
{
public BookSizeMap()
{
Id(x => x.ID);
Map(x => x.Name);
Map(x => x.Length);
Map(x => x.Width);
}
}
我的 BookSizesManager 类
public class BookSizesManager
{
public virtual string Id { get; set; }
private IList<BookSize> m_bookSizes = new List<BookSize>();
public virtual IList<BookSize> Items
{
get { return new ReadOnlyCollection<BookSize>(m_bookSizes); }
set { if(value != null) m_bookSizes = value; }
}
public virtual void Add(BookSize size)
{
if (size != null)
{
m_bookSizes.Add(size);
}
}// Also contains other unimplemented CRUD methods, but haven't listed them here to reduce 'noise'
}
对应的ClassMap
public class BookSizesManagerMap : ClassMap<BookSizesManager>
{
public BookSizesManagerMap()
{
Id(x => x.Id);
HasMany(x => x.Items)
.Cascade.All();
Table("BookSizes");
}
}
任何帮助是极大的赞赏。提前致谢。