У меня есть схема базы данных, которую я не контролирую (это файл sqlite3, экспортированный из настольного приложения, с которым мне нужно взаимодействовать), который содержит UUID для некоторых столбцов. Я использую sqlite-net-pcl
в приложении Xamarin.Forms и не могу понять, как успешно читать эти столбцы. Вот что я пробовал:
- с помощью командной строки sqlite3 я подтвердил, что схема имеет тип
uuid
для соответствующего столбца, а с помощьюselect count(distinct uuidcolumn) from mytable;
я подтвердил наличие значений для каждой строки. (Столбец может принимать значения NULL, что относится к приведенному ниже фрагменту кода, но на практике все строки имеют ненулевые значения) - У меня есть этот объект модели:
namespace brahms.Model
{
[Table("mytable")]
public class MyTable
{
[Column("uuidcolumn")]
public Guid UUIDColumn { get; }
[PrimaryKey, AutoIncrement, NotNull]
[Column("recordid")]
public int RecordID { get; set; }
}
}
- если я извлекаю объект с помощью
database.Query<MyTable>()
запросов,UUIDColumn
всегда равноGuid.Empty
. - Я попытался переключить тип в определении класса на
Byte[]
; это всегдаnull
. - Я попытался переключить тип в определении класса на
string
; это всегдаnull
. - То же самое относится и к типу
UInt16[]
(GUID может храниться как большой двоичный объект из 16-битных слов, поэтому я пробовал и этот тип).
Как я могу прочитать значения в столбцах с типом uuid
, используя sqlite-net-pcl
?
uuid
, я читал, что на самом деле не существует типа uuid но я не знаю, что это значит. Я бы предположилblob
, так как я не могу читать содержимое в виде строк, но я также не могу читать его в виде байтов. - person Graham Lee   schedule 23.02.2021blob
натолкнула меня на мысль попробоватьUInt16[]
в качестве сопоставленного типа, что тоже не работает. - person Graham Lee   schedule 23.02.2021