Моя цель - использовать создание схемы 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>
свойства таким образом?