как вставить guid в столбец sqlite UNIQUEIDENTIFIER - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь вставить следующие данные с помощью ручного сценария, который выполняется с помощью nhibernate session.CreateSQLQuery (строка sql)

строка sql:

INSERT INTO Patient (Id, RemoteId, FirstName, LastName, ChartNumber, LastScanDate, RowStatus, 
SearchName, DateUpdated, IsAllPropertiesSynced) 
SELECT x'7A2AC599D32D03458608E5C614301387', 3072799, 'iRecord', 'Demo', '', '2017-06-04 07:53', 1, 'iRecordDemoiRecord', '2017-07-23 06:34', 1
WHERE NOT EXISTS(SELECT Id FROM Patient WHERE Id = x'7A2AC599D32D03458608E5C614301387');

но после вставкикогда я выполняю get используя nhibernate, я получаю этот guid

99c52a7a-2dd3-4503-8608-e5c614301387

Как мне вставить Guid как столбец UNIQUEIDENTIFIER sqlite без изменений guid?

Спасибо

1 Ответ

0 голосов
/ 02 июня 2018

Sqlite на самом деле не имеет UNIQUEIDENTIFIER, но такие значения могут быть сохранены как BLOB (как вы делаете) или в текстовом формате.

Если вы хотите сохранить их как байтовый массив, вам нужнопомните, что порядок хранения байтов может совпадать или не совпадать с форматом представления строки, в зависимости от платформы и / или варианта UUID.

В Microsoft обычно первые три раздела хранятся с прямым порядком байтов,Это означает, что System.Guid ожидает, когда он получит сохраненные байты из sqlite.(https://en.wikipedia.org/wiki/Universally_unique_identifier#Encoding)

Необходимо соблюдать осторожность, чтобы выполнить правильную замену, когда вы сами вставляете GUID в виде байтовых массивов. В качестве альтернативы, рассмотрите возможность их хранения в общем строковом формате, чтобы избежать проблем с заменой байтов и сделать данные болеелегко понятный для любого, кто обращается к базе данных напрямую. Для этого вам следует установить BinaryGuid = False в строке подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...