【问题标题】:Many to Many Collection in both Entities Fluent NHibernate两个实体中的多对多集合 Fluent NHibernate
【发布时间】:2011-02-02 15:37:34
【问题描述】:

我正在尝试在 Fluent NHibernate 中映射多对多关系,但遇到了一个问题,很可能只是我不熟悉该工具。

我有 2 个实体,用户和项目。一个用户可以参与多个项目,一个项目可以有多个用户。

在我的用户地图中,我有

     HasManyToMany(x => x.Projects).Inverse();

当我将相同的地图放入项目中时,我得到一个异常,因为表名相反。根据这篇文章,我还认为我不需要它:Fluent NHibernate Many-to-Many

我正在逐步检查它是否有效:

     var user = _userRepository.FindByUserName("Josh");
     var projects = user.Projects;
     var user2 = projects[0].Users;

项目会返回一个包含我的项目的集合。 User2 为空。我希望 user2 是一个包含与用户相同的用户的集合。

那么我做错了什么。谢谢。

【问题讨论】:

  • 还要注意,我尝试了不带 Inverse 的映射,但它也没有那样工作。

标签: .net fluent-nhibernate


【解决方案1】:

尝试仅将 .Inverse() 放在一个映射上。

用户地图:

HasManyToMany(x => x.Projects).Inverse();

项目地图:

HasManyToMany(x => x.Users);

如果这不起作用,请尝试指定表名。

用户地图:

HasManyToMany(x => x.Projects).Inverse().Table("ProjectUser");

项目地图:

HasManyToMany(x => x.Users).Table("ProjectUser");

【讨论】:

  • 我能够通过在其中一个映射上同时执行 Inverse() 和 Table 来完成这项工作。奇怪的是,Fluent 假定表名(非倒置)为 ProjectToUser,但倒置假定 ProjectsToUsers(复数)。不知道为什么会有所不同,似乎是一个错误。谢谢
猜你喜欢
  • 2010-10-13
  • 2013-08-11
  • 2012-03-03
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
相关资源
最近更新 更多