Проверка на null
От: Naf2000  
Дата: 28.02.21 17:53
Оценка:
Имеем простейший класс смаппированный из таблицы Firebird
    [Table(Schema="SYSDBA", Name="Items")]
    public partial class Item
    {
        [PrimaryKey, Identity   ] public long   ID     { get; set; } // bigint
        [Column,     NotNull    ] public string Name   { get; set; } // varchar(100)
        [Column,        Nullable] public short? Rating { get; set; } // smallint
    }

и к нему простейшие запросы, которые совершенно по разному проверяют значение null. Общей картины пока не видно мне:
вроде бы связано с атрибутами NotNull и Nullable, но это пока поля не участвуют в выражениях:
foreach (var q in db.Items.Where(x=> x.ID!=0))
SELECT
        "x".ID,
        "x"."Name",
        "x"."Rating"
FROM
        "Items" "x"
WHERE
        "x".ID <> 0
foreach (var q in db.Items.Where(x=> x.Rating!=0))
SELECT
        "x".ID,
        "x"."Name",
        "x"."Rating"
FROM
        "Items" "x"
WHERE
        ("x"."Rating" <> 0 OR "x"."Rating" IS NULL)
foreach (var q in db.Items.Where(x=> x.Rating+42!=42))
SELECT
        "x".ID,
        "x"."Name",
        "x"."Rating"
FROM
        "Items" "x"
WHERE
        "x"."Rating" + 42 <> 42
foreach (var q in db.Items.Where(x=> x.ID%2!=0))
SELECT
        "x".ID,
        "x"."Name",
        "x"."Rating"
FROM
        "Items" "x"
WHERE
        (Mod("x".ID, 2) <> 0 OR Mod("x".ID, 2) IS NULL)
Или хотя бы как можно на это повлиять?
Re: Проверка на null
От: Петрухин Эдуард Россия  
Дата: 01.03.21 06:24
Оценка:
Здравствуйте, Naf2000, Вы писали:

N>Или хотя бы как можно на это повлиять?


См. LinqToDB.Common.Configuration.Linq.CompareNullsAsValues.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[2]: Проверка на null
От: Naf2000  
Дата: 01.03.21 16:16
Оценка:
Здравствуйте, Петрухин Эдуард, Вы писали:

ПЭ>Здравствуйте, Naf2000, Вы писали:


N>>Или хотя бы как можно на это повлиять?


ПЭ>См. LinqToDB.Common.Configuration.Linq.CompareNullsAsValues.


Спасибо. Поставил:
Configuration.Linq.CompareNullsAsValues=false;

По крайней мере единообразное поведение получилось.
Re[3]: Проверка на null
От: Danchik Украина  
Дата: 01.03.21 19:43
Оценка:
Здравствуйте, Naf2000, Вы писали:

N>Здравствуйте, Петрухин Эдуард, Вы писали:


ПЭ>>Здравствуйте, Naf2000, Вы писали:


N>>>Или хотя бы как можно на это повлиять?


ПЭ>>См. LinqToDB.Common.Configuration.Linq.CompareNullsAsValues.


N>Спасибо. Поставил:

N>
Configuration.Linq.CompareNullsAsValues=false;

N>По крайней мере единообразное поведение получилось.

Пишите для нас еще тесты? У нас такого добра завались. Около 300К тестов проганяется, практически на все случаи жизни, на разных базах данных.
Но посыл правильный — доверяй, но проверяй.
Отредактировано 01.03.2021 20:24 Danchik . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.