Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm trying to figure out how to map an IDictionary property in fluent 1.0 RTM.

From my understanding this translates to a ternary association.

Example:

class Bar
{
    public IDictionary<SomeEntity, int> Foo {get; set;}
}

Bar.hbm.xml would then contain:

<map name="Foo" table="BarFooTable">
    <key column="..."/>
    <index-many-to-many class="SomeEntity" column="SomeEntity_Id"/>
    <element column="Value" type="int"/>
</map>

What would I have to write in fluent nhibernate to produce this mapping xml?

The point of interest here is that the key is an entity type while the value is a value type. (edit: At least, this seems to distinguish itself from the various other examples and questions floating around on stackoverflow or google groups, which are value-value or key-key)

After much experimentation I can produce a mapping for an IDictionary<SomeEntity,SomeEntity> (pure entity types):

HasManyToMany(x => x.Foo)
        .AsMap("Key")
        .AsTernaryAssociation("Key2", "Value")
        ; 

I can also produce a mapping for an IDictionary<int,int> (pure value types):

HasMany(x => x.Foo)
    .AsMap<int>("Key")
    .Element("Value")
    ;

I can even get some way to producing a mapping for an IDictionary<int, SomeValue), although none that NHibernate will accept.

But I cannot figure out how to produce a mapping for an IDictionary<SomeValue, int> which is what I want. Can someone provide some tips?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
761 views
Welcome To Ask or Share your Answers For Others

1 Answer

HasMany(x => x.Foo)
    .KeyColumn("BarId")
    .Element("IntValue")
    .AsMap<SomeEntity>("SomeEntityId")
    .AsTernaryAssociation("SomeEntityId");

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...