parent-> parent与parent-> group-> child的子关系

时间:2012-07-16 09:27:27

标签: nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping

我有一个遗留数据库(仍由其他遗留应用程序使用),其中该组被非规范化并复制到子行中

table parent
(
  id
)

table child
(
  id
  parent_id
  group_id
  group_name
  group_Flag
  group_type
  name
)

我希望将它们映射到

class Parent
{
    public long Id { get; private set; }
    public ICollection<Group> Groups { get; private set; }
}
class Group
{
    public long Id { get; set; }
    public string Name { get; set; }
    public GroupType Type { get; set; }
    public bool Flag { get; set; }
    public ICollection<Child> Childs { get; private set; }
}
class Child
{
    public long Id { get; private set; }
    public string Name { get; set; }
}
  1. 这可能吗?
  2. 如何在任何NHibernate的映射方法中做到这一点(xml,MbC,Fluent,...)
  3. 更新:一些其他信息

    • 由于遗留应用程序
    • ,无法更改架构
    • 数据库中的其他视图是一个选项
    • 可以在班级模型中泄漏

1 个答案:

答案 0 :(得分:0)

以下是一些初学者:

您可以尝试查看NHibernate参考的“映射集合”部分: - http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-collections

然后,您可以尝试使用集合映射的“where”子句映射Groups类的Parent属性:

  

(9)其中(可选)指定在检索或删除集合时使用的任意SQL WHERE条件(如果集合应仅包含可用数据的子集,则非常有用)

以相同的方式映射Childs类的Group属性。

否则,您可以创建一些视图以不同方式显示数据,并将对象映射到这些视图(将update =“false”和insert =“false”设置为标识符属性映射)