2016-06-10 3 views
1

У меня есть две колонки валюты в моем столе. Они находятся в моей модели как:EF Core Сроки с нулевым ответом

public decimal MSRP { get; set; } 
public decimal Invoice { get; set; } 

Я обнаружил, что, когда я комментирую эти столбцы, все работает нормально. Затем я прошел, чтобы посмотреть, что с ними связано, в отличие от других валютных столбцов. Я заметил, что они являются единственными столбцами валюты, которые на самом деле имеют значения NULL. Другие столбцы валют допускают NULL, но не имеют столбцов NULL.

Затем я сменил их на строки и все загрузилось нормально.

Здесь ошибка отладки выхода:

Microsoft.EntityFrameworkCore.Query.Internal.SqlServerQueryCompilationContextFactory:Error: An exception occurred in the database while iterating the results of a query.

Как построить модель так, что она читает его как десятичные, но все же позволяет аннулирует? Или это невозможно?

ответ

2

Использование:

public decimal? MSRP { get; set; } 
public decimal? Invoice { get; set; } 
+0

могли бы вы объяснить, почему? – Toxicable

+0

Couse @Toxicable. Это нелегитимная операция в C#. Когда вы ставите знак вопроса после своего типа, это означает, что он может быть нулевым. Или, если вы хотите использовать свойство, которое может иметь нулевое значение, вы можете использовать двойной знак вопроса, а затем делать что. Например: 'var a = Classname.MSRP ?? 0;' это означает, что если MSRP имеет значение null, он заменит это на 0. Вы можете прочитать больше на этом веб-сайте: https://msdn.microsoft.com/en-us /library/1t3y8s4s.aspx – Hamed

+0

Да Я знаю, что такое тип с нулевым значением и как их установить, но мне было интересно, почему это решает проблему op. – Toxicable

1

Я обнаружил, что добавление вопросительного знака после типа позволяет ему принимать значения NULL. например:

public decimal? MSRP { get; set; } 
public decimal? Invoice { get; set; }