Проверка на 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)
Или хотя бы как можно на это повлиять?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.