【发布时间】:2015-07-12 05:41:48
【问题描述】:
我是使用 Fluent NHibernate 的初学者。 我正在开发一个必须与现有数据库交互的 C# 应用程序。假设我有 2 个表:Items 和 ItemsList。
Items: ID INT ItemName VARCHAR(100)
ItemsList: ID INT ChildItemID INT
我已经构建了 2 个类及其映射:
public class Items
{
public virtual int id {get; set;}
public virtual string itemName {get; set;}
}
public class ItemsMap : ClassMap<Items>
{
public ItemsMap()
{
Id(x => x.id).GeneratedBy.Increment();
Map(x => x.itemsName);
}
}
public class ItemsList()
{
public virtual int id {get; set;}
public virtual IList<Items> childItems {get; set;}
public ItemsList()
{
childItems = new List<Items>();
}
}
public class ItemsListMap : ClassMap<ItemsList>
{
public ItemsListMap()
{
Id(x => x.id).GeneratedBy.Increment();
HasMany(x => x.childItems).KeyColumn("childID").Cascade.All();
}
}
最后,我在 itemsList 中插入一个项目并将其全部保存:
try
{
using( ISession session = NH.OpenSession())
{
using(ITransaction transaction = session.BeginTransaction())
{
Items i = New Items()
i = session.get<Items>(1);
ItemsList il = new ItemsList();
il.childID.Add(i);
session.SaveOrUpdate(il);
transaction.Commit();
}
}
}
所以当我提交时,我在 ItemsList 表中有一个新条目,但 childID 是空白的。
问题:
我看到的所有示例都引用了 Items 表中的 ItemsListID。但我不想有这个参考,因为我希望项目在项目表中是唯一的。我怎样才能做到这一点?
【问题讨论】:
标签: nhibernate fluent-nhibernate mapping nhibernate-mapping fluent-nhibernate-mapping