流畅的NHibernate字典映射问题

时间:2010-11-04 15:02:22

标签: fluent-nhibernate


我有以下实体

public class Entity1
 {
  public virtual Guid Id { get; set; }
  public virtual IDictionary<Guid, Entity2> Entities2 { get; set; }
 }

 public class Entity2
 {
  public virtual Guid Id { get; set; }
  public virtual IDictionary<Guid, Entity1> Entities1 { get; set; }
 }

数据库表

CREATE TABLE [dbo].[EntityLinks](
  [Entity1Id] [uniqueidentifier] NOT NULL,
  [Entity2Id] [uniqueidentifier] NOT NULL,
  [LinkItemId] [uniqueidentifier] NOT NULL
 )

以及以下映射:

for Entity1

mapping.HasManyToMany<Entity2>(rc => rc.Entities2)
  .Table("EntityLinks")
  .ParentKeyColumn("Entity1Id")
  .ChildKeyColumn("Entity2Id")
  .AsMap<Guid>("LinkItemId")

for Entity2

mapping.HasManyToMany<Entity1>(rc => rc.Entities1)
  .Table("EntityLinks")
  .ParentKeyColumn("Entity2Id")
  .ChildKeyColumn("Entity1Id")
  .AsMap<Guid>("LinkItemId")

添加数据工作正常,我可以看到Entity1.Entities2已填充,但Entity2.Entities1未填充。

为什么会出现这种情况的任何建议?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我可能错了,但你可以尝试:

mapping.HasManyToMany<Entity2>(rc => rc.Entities2)
  .Table("EntityLinks")
  .ParentKeyColumn("Entity1Id")
  .ChildKeyColumn("Entity2Id")
  .AsMap<Guid>("LinkItemId")
  .Inverse()

mapping.HasManyToMany<Entity1>(rc => rc.Entities1)
  .Table("EntityLinks")
  .ParentKeyColumn("Entity2Id")
  .ChildKeyColumn("Entity1Id")
  .AsMap<Guid>("LinkItemId")
  .Cascade.All();