Я использую SQL Server FileTable с NHibernate.
При вставке NHibernate вызовет хранимую процедуру, которая вставит запись в FileTable. У меня проблема в том, что столбец Id (stream_id
) в FileTable генерируется сервером SQL при вставке. Он генерируется ограничением по умолчанию newsequentialid()
.
Как мне вернуть этот идентификатор из моей хранимой процедуры и сопоставить его со свойством id моей сущности?
Обновление:
Относительно другого вопроса: [NHibernate использует хранимую процедуру ИЛИ отображение] [1] Это не применимо здесь. Я использую хранимую процедуру для вставки объекта. Эта хранимая процедура должна возвращать идентификатор типа Guid, созданный базой данных во время вставки. Я хочу, чтобы NHibernate сопоставил этот идентификатор с сущностью.
Мне нужно что-то вроде Generators.TriggerIdentity, но для Guid вместо Int.
Update2:
Мне удалось заполнить мой Entity.Id, установив для его стратегии генерации идентификаторов значение «Native» и выбрав возвращаемое значение из хранимой процедуры. Но это нарушает транзакцию, потому что для получения идентификатора необходимо go к базе данных и выполнить вставку.