gpt4 book ai didi

c# - 具有自引用功能的 Fluent NHibernate 自动映射

转载 作者:太空狗 更新时间:2023-10-29 22:56:11 26 4
gpt4 key购买 nike

我有一个看起来像这样的简单类...

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>();
}
}

... 其中 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();

关于c# - 具有自引用功能的 Fluent NHibernate 自动映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1547956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com