2013-10-27 56 views
0

我一直在尋找正確的映射,沒有成功。FluentNhibernate Map IDictionary <Entity1,Entity2>

到了一點,我開始發現誰放棄了https://groups.google.com/forum/#!topic/fluent-nhibernate/u_MYdOTD1Jk

人,所以 - 你怎麼映射的

IDictionary<Entity1,Entity2> ? 

我會寄我試過,但我在我的15日〜現在就來試試..

public class Entity1Map : ClassMap<Entity1> 
{ 
    public Entity1Map() 
    { 
     Id(x=> x.ID); 
    } 
} 

public class Entity2Map : ClassMap<Entity2> 
{ 
    public Entity2Map() 
    { 
     Id(x=> x.ID); 
    } 
} 


public class Entity3 { public IDictionary<Entity1,Entity2> Dict { get;set; } } 
public class Entity3Map : ClassMap<Entity3> 
{ 
    public Entity3Map() 
    { 
     Id(x=> x.ID); 

     //DictMap?? 
    } 
} 

感謝很多:)

+0

你見過這樣的:http://stackoverflow.com/questions/2254176/how-to-map-idictionarystring-entity-in-fluent-nhibernate –

+0

剛剛試了一下,沒沒有工作,給了我一個字典的KeyValuePair類的未映射異常,該解決方案是爲IDictionary

回答

0

使用EntityMap。以下是爲我工作

public class Entity3Map : ClassMap<Entity3> 
{ 
    public Entity3Map() 
    { 
     Id(x => x.Id); 

     HasManyToMany(x => x.Dict) 
      .Table("linkTable") 
      .Cascade.All() 
      .AsEntityMap(); 
    } 
} 


var e1 = new Entity1(); 
var e2 = new Entity2(); 
using (var tx = session.BeginTransaction()) 
{ 
    session.Save(e1); 
    session.Save(new Entity3 { Dict = { { e1, e2 } } }); 
    tx.Commit(); 
} 
session.Clear(); 

var entity3 = session.Query<Entity3>().FetchMany(x => x.Dict).ToList().First(); 

Assert.Equal(1, entity3.Dict.Count); 
Assert.Equal(e1.Id, entity3.Dict.First().Key.Id); 
Assert.Equal(e2.Id, entity3.Dict.First().Value.Id); 
+0

我會試試看,謝謝 –

相關問題