2010-11-04 123 views
2


我有以下實體功能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; } 
} 

DB表

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

及以下映射:

爲ENTITY1

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

爲ENTITY2

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

添加數據工作正常,我可以看到Entity1.Entities2填充,但是沒有填充Entity2.Entities1。

任何建議,爲什麼這可能是?

預先感謝您。

回答

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(); 
+0

感謝您的建議,但不unfrtunately解決我的問題:( – georgejh 2010-11-05 08:59:45