Хорошо, поигрался с этим и надеюсь, что решу вопрос.
Итак, модели:
public class ClassOne : Entity
{
public virtual string Title { get; set; }
public virtual ClassTwo[] Tags { get; set; }
}
public class ClassTwo : Entity
{
public virtual string Title { get; set; }
}
Базовый класс содержит определение Id, которое в моем случае является длинным. Не должно быть проблем с гидами
Класс отображения: мы используем FluentNhibernate с некоторыми соглашениями, также идея в HasManyToMany
public class ClassOneMappingOverride : IAutoMappingOverride<ClassOne>
{
public void Override(AutoMapping<ClassOne> mapping)
{
mapping.HasManyToMany(x => x.Tags).AsArray(x => x.Id).ParentKeyColumn("classOneId")
.ChildKeyColumn("classTwoId")
.Table("ClassOneLinkClassTwo")
.Cascade.SaveUpdate();
}
}
Обратите внимание, что если вы не укажете ParentKey, ChildKey и Table, он не создаст таблицу ссылок.
Модульный тест для вставки данных выглядит так:
public class ClassOneDataPart : DataPartBase, IDataPart
{
public void AddToDatabase()
{
var classOne = new ClassOne { Title = "classOne" };
var classTwo1 = new ClassTwo { Title = "class21" };
var classTwo2 = new ClassTwo { Title = "class22" };
var tags = new[] { classTwo1, classTwo2 };
classOne.Tags = tags;
this.SaveData(classOne);
this.SaveData(classTwo1);
this.SaveData(classTwo2);
}
}
и результат в базу данных:
![alt text](https://i.stack.imgur.com/vJrUs.png)
С уважением,
Ion