Моя цель - использовать генерацию схемы NHibernate вместе с автоматом Fluent NHibernate для создания моей базы данных. У меня проблемы с тем, что я назову «однонаправленными отношениями« многие ко многим ».
Многие из моих сущностей имеют локализованные ресурсы. Один класс может выглядеть так:
public class Something {
public virtual int Id {get; private set;}
public virtual Resource Title {get;set;}
public virtual Resource Description {get;set;}
public virtual IList<Resource> Bullets {get;set;}
}
Класс Resource
не имеет ссылок назад; они полностью однонаправлены.
public class Resource {
public virtual int Id {get; private set;}
public virtual IList<LocalizedResource> LocalizedResources {get;set;}
// etc.
}
public class LocalizedResource { //
public virtual int Id {get; private set; }
public virtual string CultureCode {get;set;}
public virtual string Value {get;set;}
public virtual Resource Resource {get;set;}
}
Без IList<Resource>
все генерируется так, как я бы хотел - идентификаторы ресурсов находятся в полях Title
и Description
. Когда я добавляю IList
, NHibernate добавляет поле something_id
в таблицу Resource
. Я понимаю, почему это происходит, но в этой ситуации это не устойчивый подход.
Я хочу создать таблицу соединений для пуль. Что-то вроде:
CREATE TABLE SomethingBullet (
Id int NOT NULL PRIMARY KEY IDENTITY(1,1),
Something_Id int NOT NULL,
Resource_Id int NOT NULL
)
Таким образом, когда я добавлю другие двадцать с лишним сущностей в базу данных, я не получу смехотворно широкую и редкую таблицу Resource
.
Как я могу дать Automapper команду обрабатывать все IList<Resource>
свойства таким образом?