我正在使用代表层次结构的遗留数据库。对象表示如下(简化版):
class Key
{
public virtual int id { get; set; }
// more properties
}
class Leaf
{
public virtual int id { get; set; }
public virtual Key key { get; set; }
public virtual Key parent { get; set; }
}
class Branch
{
public virtual int id { get; set; }
public virtual Key key { get; set; }
public virtual Key parent { get; set; }
}
上面的映射显然是" key"被映射为密钥表的外键。
Leaf和Branch之间没有直接关系。实际上,通过密钥, Leaf 与分支具有多对一关系。因此,一个叶子只能有一个父项,而分支也可以只有一个父项。
我想提供一个连接映射,以便我可以将 ParentBranch 属性提供给类Leaf,这样我就可以访问分支。
Leaf leaf;
Branch branch = leaf.ParentBranch;
查询可以写成
var parent = session.QueryOver<Branch>()
.Where(br => br.key == leaf.parentKey)
.SingleOrDefault();
有没有办法将查询映射到nhibernate / fluent nhibernate中的 Leaf.Parent ?作为遗留数据库,现在无法简化模式。
这些物体的持久性也是一个挑战。但我认为,这将是一个单独的问题。