2010-12-10 11 views
1

Wie kann ich ordnen Sie die Klasse AttributeSet mit Fluent NHibernate eine fließend MappingFluent NHibernate und Klasse mit Indexer Mapping

public class AttributeSet : DictionaryBase 
{ 
    private readonly Dictionary<string, object> _cache; 

    public AttributeSet() 
    { 
     _cache = new Dictionary<string, object>(); 
    } 

    public object this[string index] 
    { 
     get 
     { 
      return _cache[index]; 
     } 
     set 
     { 
      _cache[index] = value; 
     } 
    } 
} 



public class Entity 
{ 
    protected Entity() 
    { 
     Attributes = new AttributeSet(); 
    } 

    public virtual int Id { get; set; } 
    public virtual string Label { get; set; } 
    public virtual string Description { get; set; } 
    public virtual DateTime CreatedDate { get; set; } 

    public virtual AttributeSet Attributes { get; set; } 
} 

Antwort

1

Ich glaube nicht, es gibt einen Weg, um Ihre Indexer direkt auf der Karte, aber Sie können die belichten zugrunde liegenden Wörterbuch-Typ und Karte, die stattdessen. Wenn Sie das Wörterbuch nicht als öffentlich verfügbar machen möchten, können Sie es stattdessen als private Eigenschaft als explained here zuordnen. Zum Zuordnen eines Wörterbuchs, see here.

könnte ein Beispiel

HasMany<object>(Reveal.Member<AttributeSet>("Cache")) 
    .KeyColumn("AttributeSetId") 
    .AsMap<string>(idx => idx.Column("Index"), elem => elem.Column("Value")) 
    .Access.CamelCaseField(Prefix.Underscore) 

Mapping des Objekttyp im Wörterbuch sein könnte interessant sein, ich weiß nicht, ob NHibernate der Lage, es zu einem zugrunde liegenden Datenbanktyp direkt zu übersetzen.

Verwandte Themen