将域实体映射到多个表

时间:2009-01-26 22:20:58

标签: c# nhibernate

我有一个像这样定义的对象(过滤器)

public class Filter
{
    public int FilterId { get; set; }

        public string Name { get; set; }

        public IList<User> Users { get; set; }
}

如果可能,我想将对象存储在多个表中(有时跨越多行)

给定Filter的初始化如下:

Filter myFilter = new Filter();
myFilter.FilterId = 1;
myFilter.Name = "Name of my filter";
myFilter.Users.Add(new User("Joe", 10));
myFilter.Users.Add(new User("Jim", 20));

..我希望它保存在表“Filter”和“Filter_User”

过滤器最终会以:

1我的过滤器名称

Filter_User将包含

1 10(参考乔的身份证) 1 20(参见吉姆的身份证)

我一直在查看文档,我所能找到的就是使用映射文件中的元素。但据我所知,它只会让我用组件关系(即Employee和EmployeeDetails - 1:1)来做这件事

有人指出我正确的方向吗?

1 个答案:

答案 0 :(得分:3)

我认为你只是在寻找一个多对多的关联? 您没有使用组件关系约束。

您可以查看多对多映射类型吗?

<set name="Users" table="Filter_User">
  <key column="filterid" />
  <many-to-many column="userid" class="User" />
</set>