Nhibernate 家长->;子女与父母的关系->;集团->;小孩

Nhibernate 家长->;子女与父母的关系->;集团->;小孩,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,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<Grou

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

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; }
}
类父类
{
公共长Id{get;private set;}
公共ICollection组{get;private set;}
}
班级
{
公共长Id{get;set;}
公共字符串名称{get;set;}
公共GroupType类型{get;set;}
公共布尔标志{get;set;}
公共ICollection子项{get;private set;}
}
班童
{
公共长Id{get;private set;}
公共字符串名称{get;set;}
}
  • 这可能吗
  • 如何在NHibernate的任何映射方法(xml、MbC、Fluent等)中做到这一点
  • 更新:一些额外的信息

    • 由于旧应用程序的原因,无法更改架构
    • 数据库中的其他视图是一个选项
    • 类模型中可能存在泄漏

      • 以下是一些入门课程:

        您可以尝试查看NHibernate参考的“映射集合”部分: -

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

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

        并以相同的方式映射
        组的
        Childs
        属性


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

        我应该在组的where中放置什么?组xxx列对于每个孩子都是相同的,每个家长的子id是未知的/不同的。如果我有我的视图
        组(组id,家长id)
        我如何向其中添加新组?请在您的问题中陈述您的所有要求,否则很难为您的问题提出正确的解决方案:)谢谢您的时间。需求在问题中,它将2个表映射到3个实体,它们之间有1-n个关联。我的评论只是为了澄清你的答案。