2010-02-12 69 views
10

可能重複映射的IDictionary <字符串,實體>:
Use Component as IDictionary index in AsMap in Fluent Nhibernate如何在功能NHibernate

嗨,

我一張有一個IDictionary的類。

<map name="CodedExamples" table="tOwnedCodedExample"> 
    <key> 
     <column name="OwnerClassID"/> 
    </key> 
    <index type="string" column="ExampleCode"/> 
    <many-to-many class="CodedExample" column ="CodedExampleClassID"/> 
    </map> 

,你可以看到它使用了許多一對多得到使用tOwnedCodedExample表,找到它們由OwnerClass擁有從表中CodedExamples。

我意識到這是一個非常基本的(希望標準)映射,但我掙扎着,找不到任何文檔,因此將非常感謝任何可能的幫助。

非常感謝

斯圖

+3

它不是重複的。問題是不同的。 – 2010-02-13 09:12:22

+2

謝謝Paul,問題非常不同。我的另一個問題是關於字典索引的複合關鍵字,我希望這是關於FluentNH中字典的標準用法的一個更簡單的問題。保羅,你知道如何繪製這個圖嗎?我已經看到很多帖子,說這是可能的,但沒有顯示如何! – Stu 2010-02-13 14:28:38

回答

13

我有一個工作示例,這應該說清楚你的。

類:

public class Customer : Entity 
{   
    public IDictionary<string, Book> FavouriteBooks { get; set; } 
} 

public class Book : Entity 
{ 
    public string Name { get; set; } 
} 

然後在地圖:

HasManyToMany<Book>(x => x.FavouriteBooks) 
      .Table("FavouriteBooks")     
      .ParentKeyColumn("CustomerID") 
      .ChildKeyColumn("BookID") 
      .AsMap<string>("Nickname")     
      .Cascade.All(); 

生成的XML:

<map cascade="all" name="FavouriteBooks" table="FavouriteBooks" mutable="true"> 
    <key> 
    <column name="`CustomerID`" /> 
    </key> 
    <index type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
    <column name="`Nickname`" /> 
    </index> 
    <many-to-many class="Domain.Book, Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> 
    <column name="`BookID`" /> 
    </many-to-many> 
</map> 

生成的SQL:

create table "Customer" (
    "Id" integer, 
    "FirstName" TEXT, 
    primary key ("Id") 
) 

create table FavouriteBooks (
    "CustomerID" INTEGER not null, 
    "BookID" INTEGER not null, 
    "Nickname" TEXT not null, 
    primary key ("CustomerID", "Nickname") 
) 

create table "Book" (
    "Id" integer, 
    "Name" TEXT, 
    primary key ("Id") 
) 
+0

這看起來非常感謝。明天當我進入辦公室回到你身邊時,我會放手一搏。 – Stu 2010-02-14 11:05:34

+0

謝謝Paul,那很好。不幸的是,這個問題已被封閉爲重複,但希望它仍會出現在搜索結果中,以便其他人可以使用它作爲示例。 乾杯 Stu – Stu 2010-02-15 20:10:11

2

book.name作爲關鍵字而不是暱稱。