У меня есть класс с IDictionary на нем.
<map name="CodedExamples" table="tOwnedCodedExample">
<key>
<column name="OwnerClassID"/>
</key>
<index type="string" column="ExampleCode"/>
<many-to-many class="CodedExample" column ="CodedExampleClassID"/>
</map>
поскольку Вы видите, что это использует many-many для получения CodedExamples от их таблицы с помощью tOwnedCodedExample таблицы для нахождения, которые принадлежат OwnerClass.
Я понимаю, что это - очень простое (и надо надеяться стандарт) отображение, но борется и не может найти документацию для него, поэтому было бы очень благодарно из любой возможной справки.
Большое спасибо
Stu
У меня есть рабочий пример, он должен вам прояснить.
Классы:
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")
)