2012-03-26 9 views
2

Wie kann ich diese Entitäten mit Mapping-by-Code Karte:NHibernate Mapping von Code: Wie IDictionary zuordnen?

public class Foo 
{ 
    public virtual IDictionary<Bar, string> Bars { get; set; } 
} 

public class Bar 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
} 

ich this thread gefunden, aber es ist nicht ein Unternehmen abzubilden, nur einfache Typen. Ich habe versucht, viele Abbildungen, darunter Automapping:

Map(x => x.Bars, 
    m => 
    { 
     m.Key(k => k.NotNullable(true)); 
     m.Cascade(Cascade.All); 
    }, 

Aber die meisten von ihnen, diese beiden Fehler werfen:

  1. Fremdschlüssel (Bars [idx])) müssen gleiche Anzahl von Spalten wie die referenzierten Primärschlüssel (Balken [FooId, idx]).
  2. Eine Zuordnung aus der Tabelle FoosToStrings bezieht sich auf eine nicht zugeordnete Klasse: System.String.

Jede Hilfe wird sehr geschätzt. Vielen Dank. :)

+0

Dies führt zu dem Index-many-to-any-Mapping arbeiten sollte, die ich glaube, einige Probleme in FluentNHibernate hat. Bitte lesen Sie diese verwandte Frage mit einer Problemumgehung. http://stackoverflow.com/questions/8542298/fluent-nhibernate-index-many-to-many. –

+0

Ich verwende nicht Fluent. Ich verwende Mapping nach Code. – Yogesh

+0

Entschuldigung. Müssen Sie die Frage genauer lesen. –

Antwort

0

ich denke, die

Map(x => x.Bars, 
    entryMap => entryMap.Key(k => k.Column("foo_id")), 
    keymap => keymap.ManyToMany(m => m.Column("bar_Id")), 
    elementMap => elementMap.Element(m => m.Column("value"))); 
Verwandte Themen