Mar*_*cus 5 c# fluent-nhibernate
我有一个看起来像这样的简单类......
public class Item {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual int ParentId { get; set; }
public virtual IList<Item> Children { get; private set; }
public Item() {
Children = new List<Item>();
}
}
Run Code Online (Sandbox Code Playgroud)
...其中Id是主键,ParentId是外键.当我运行此代码时,我得到无效的对象名称'ItemToItem'.例外,我无法弄清楚出了什么问题?我似乎NHibernate试图从名为ItemToItem的表中选择或类似的东西?
正确的自我参考方式
// Class
public class Item
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Item Parent { get; private set; }
public virtual IList<Item> Children { get; set; }
public Item() {
Children = new List<Item>();
}
}
// Map
References(x => x.Parent).Column("ParentId");
HasMany(x => x.Children).Cascade.All().KeyColumn("ParentId");
// Add Item
session.Save(new Item { Description = "Electronics",
Children = {
new Item { Description = "PS2" },
new Item { Description = "XBox" }
}});
// Get Item
var items =
(from c in session.Linq<Item>()
where c.Parent == null
select c).ToList();
Run Code Online (Sandbox Code Playgroud)
是的。流利的 nhibernate 将此视为多对多关系。我完全不知道如何建立你想要的关系类型。您可能至少想设置一个成员:
public virtual Item Parent{ get; set; }
Run Code Online (Sandbox Code Playgroud)