Чтение значения фиксированной строки CHAR из таблицы с использованием поставщика Linq2db Oracle:
CREATE TABLE mytable
(pk NUMBER(15,0) NOT NULL,
fixed_data CHAR(20) DEFAULT ' ' NOT NULL)
Хотя в базе данных длина поля FIXED_DATA составляет 20,
SELECT LENGTH(fixed_data) FROM mytable WHERE pk = 1
-- result is 20
Когда то же самое поле читается с использованием Linq2Db, значение усекается до пустой строки:
var row = (from row in database.mytable where row.pk == 1 select row).ToList()[0];
Console.WriteLine(row.fixed_data.Length);
// result is zero
Это вызывает проблему, когда запись обновляется с использованием Linq2Db, Oracle преобразует пустую строку в NULL, а при выполнении UPDATE происходит сбой:
database.Update(row);
// Oracle.ManagedDataAccess.Client.OracleException: 'ORA-01407: cannot update ("MYSCHEMA"."MYTABLE"."FIXED_DATA") to NULL
Есть ли какие-либо настройки в Linq2Db для цикла чтения-> обновления для работы с типом CHAR и ограничением NOT NULL?