Я использую NHibernate для массовой вставки строк в мою базу данных. Из-за объема данных, которые я вставляю, я использую IStatelessSession
вместо ISession
. Вставляемые объекты используют присвоенные идентификаторы (т. Е. Не генерируются hilo или guids - уникальные идентификаторы назначаются объектам).
Моя проблема в том, что у меня есть объект (скажем, Foo
), который имеет ссылку "многие-к-одному" на другой объект (скажем, Bar
). Сначала я вставляю все объекты Bar
, и это не проблема.
Проблема возникает, когда я хочу вставить Foo
объекты. Я знаю уникальный идентификатор каждого объекта Bar
, но мне не нужно извлекать каждый объект Bar
из базы данных, чтобы установить свойство объекта Foo
перед его вставкой.
Сейчас самое время показать простой пример:
public class Foo {
// Unique identifier (assigned)
public virtual int Id { get; set; }
// Many-to-one reference to a Bar object
public virtual Bar Bar { get; set; }
}
public class Bar {
// Unique identifier (assigned)
public virtual int Id { get; set; }
}
Допустим, я хочу создать новый Foo
объект с Id
из (скажем) 1234, который ссылается на Bar
объект с Id (скажем) 4567. Я знаю, что уже есть Bar
объект с этим идентификатором, потому что ранее я добавил все Bar
объекты.
Как мне добавить объект Foo
без необходимости повторного извлечения объекта Bar
из базы данных?