Как отобразить IDictionary <строка, Объект> в Быстром 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>

поскольку Вы видите, что это использует many-many для получения CodedExamples от их таблицы с помощью tOwnedCodedExample таблицы для нахождения, которые принадлежат OwnerClass.

Я понимаю, что это - очень простое (и надо надеяться стандарт) отображение, но борется и не может найти документацию для него, поэтому было бы очень благодарно из любой возможной справки.

Большое спасибо

Stu

10
задан Cœur 10 July 2018 в 13:14
поделиться

2 ответа

У меня есть рабочий пример, он должен вам прояснить.

Классы:

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")
)
13
ответ дан 3 December 2019 в 22:36
поделиться

Сопоставьте book.name как ключ вместо псевдонима.

2
ответ дан 3 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: