我有一个遗留数据库(仍由另一个遗留应用程序使用),其中的组被非规范化并复制到子行中
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; }
}
- 这可能吗
- 如何在NHibernate的任何映射方法(xml、MbC、Fluent…)中做到这一点
更新:一些附加信息
- 由于遗留应用程序的原因,无法更改架构
- 数据库中的其他视图是一个选项
- 类模型可能发生泄漏
以下是一些启动程序:
您可以尝试查看NHibernate参考的"映射集合"部分:-http://nhibernate.info/doc/nh/en/index.html#mapping-申报集合
然后,您可以尝试使用集合映射的"where"子句来映射Parent
类的Groups
属性:
(9) 其中(可选)指定检索或删除集合时要使用的任意SQL where条件(如果集合应仅包含可用数据的子集,则此条件很有用)
并以相同的方式映射Group
类的Childs
属性。
否则,您可以创建一些视图来以不同的方式显示数据,并将对象映射到这些视图(将update="false"和insert="false"设置为标识符属性映射)