Я пытаюсь вставить следующие данные с помощью ручного скрипта, который выполняется с использованием сеанса nhibernate. CreateSQLQuery (string 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');
но после вставки, когда я выполняю использование nhibernate, я получаю это руководство
99c52a7a-2dd3-4503-8608-e5c614301387
Как я могу вставить Guid как столбец UNIQUEIDENTIFIER sqlite без изменений guid?
Спасибо





В Sqlite на самом деле нет УНИКАЛЬНОГО ИДЕНТИФИКАТОРА, но такие значения могут храниться как BLOB-объекты (как вы это делаете) или в текстовом формате.
Если вы хотите сохранить их в виде массива байтов, вам необходимо знать, что порядок хранения байтов может быть или не совпадать с форматом представления строки, в зависимости от платформы и / или варианта UUID.
В Microsoft обычно первые три раздела хранятся с прямым порядком байтов, что означает, что именно этого ожидает System.Guid, когда получает сохраненные байты из sqlite. (https://en.wikipedia.org/wiki/Universally_unique_identifier#Encoding)
Вы должны быть осторожны, чтобы выполнить правильную замену, когда вы сами вставляете GUID в виде байтовых массивов. В качестве альтернативы рассмотрите возможность сохранения их в общем строковом формате, чтобы избежать проблем с подкачкой байтов и сделать данные более понятными для тех, кто напрямую запрашивает базу данных. Для этого вы должны установить BinaryGuid = False в строке подключения.