0

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

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、...)中做到这一点

更新:一些附加信息

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

1 回答 1

0

这里有一些开胃菜:

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

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

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

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

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

于 2012-07-16T12:47:46.723 回答