Как отобразить newsequentialid с помощью NHibernate - PullRequest
0 голосов
/ 22 января 2020

Я использую 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 к базе данных и выполнить вставку.

1 Ответ

0 голосов
/ 23 января 2020

Мне удалось решить эту проблему, изменив Id Generator на Generators.Native. Затем мне пришлось вернуть вставленный идентификатор из хранимой процедуры.

...