- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于这样一个菜鸟问题深表歉意。
我有两个实体:Parent 和 Child,建模如下:
public class Parent()
{
public virtual int ID{ get; protected set; },
public virtual IList<child> Children {get;set;}
}
public class Child()
{
public virtual int ID{ get; protected set; },
public virtual Parent Parent {get;set;}
}
使用这些映射:
public class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x=>x.Children)
.Cascade
.AllDeleteOrphan()
.Inverse();
}
}
public class ChildMap : ClassMap<Child>
{
public ChildMap()
{
Id(x => x.Id).GeneratedBy.Identity();
References(x=>x.Parent)
.Cascade
.SaveUpdate();
}
}
我保留了延迟加载,因为 parent 可以有很多 child ,我不想总是加载 child 。
我试过以下方法:
var query1 = Session.QueryOver<Parent>()
.Where(x => x.Id == parent.Id)
.Fetch(t=>t.Children).Eager().List<Parent>();
var query2 = Session.CreateCriteria<Parent>("d")
.Add(Restrictions.Eq("Id", parent.Id))
.SetFetchMode("d.Children", FetchMode.Eager)
.List<Parent>();
var query3 = Session.CreateCriteria(typeof (Parent))
.Add(Restrictions.Eq("Id", parent.Id))
.SetFetchMode("Children", FetchMode.Eager)
.List<Parent>();
当然,我已经简化了这些对象,但我也在他们自己的控制台应用程序中尝试了这些,只是为了测试。问题是:在这些查询中,我实际上没有得到 child 。
查看 SQL Profiler,我看不到任何由 nhibernate 生成的连接。我知道我可以走另一条路,从 child 那里得到 parent ,但我不想那样做。
我想我在理解 Nhibernate 时遗漏了一些基本的东西。
感谢您的帮助
最佳答案
解决了这个问题,实际上应该在第一个代码示例中包含更多细节。
在同一 session 中保存父对象(使用级联)后,我试图检索父对象的子对象。
关闭 session 并尝试上述任何一个查询都会返回 child (ren)。
关于c# - 我如何在 nhibernate 中急切地加载子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940929/
我以前使用过像 Netbeans 和 eclipse 这样的 IDE。 我在 friend 的电脑上下载了“Visual Studio Express 2013 for windows desktop
我正在尝试弄清楚如何在 GBA 大小的 EZ Flash 3 合 1 卡中对 PSRAM 进行编程。基本上重复 GBA Exploader 和其他程序所做的事情。 如果我选择一个 block 并对其进
Filter1=re.findall(r'',PageSource) Filter2=re.findall(r'',PageSource) Filter3=re.findall(r'(.*?).*?'
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我是一名优秀的程序员,十分优秀!