Проблема с полем Nullable в хранимой процедуре Linq + отчеты о кристаллах на VS2008 - PullRequest
0 голосов
/ 31 августа 2011

У меня есть таблица в Sql Server, которая содержит поле int цена , что допускает пустые значения .Я создал следующую хранимую процедуру:

CREATE PROCEDURE [dbo].[proc_test]
AS
    select a.id, a.product, case when a.price is null then 0 else a.price end
    from tblOne a
    ...

Я также создал linq to sql файл, который использует proc_test .

Проблема заключается в том, что автоматически сгенерированный код linq to sql в: designer.cs имеет переменную обнуляемую цену и Crystal Reports нетразрешить обнуляемые переменные.

PS: мне не разрешено изменять структуру tblOne .

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Используйте функцию IsNull () вместо выражения case. Поэтому измените вашу хранимую процедуру на:

CREATE PROCEDURE [dbo].[proc_test]
AS
    select a.id, a.product, isnull(a.price, 0)
    from tblOne a
    ...

Примечание:

Coalesce не подходит в этой ситуации:

Рассматривается выражение, включающее ISNULL с ненулевыми параметрами. быть NOT NULL, в то время как выражения, включающие COALESCE с ненулевым Параметры считаются NULL. В SQL Server

http://msdn.microsoft.com/en-us/library/ms190349.aspx

0 голосов
/ 31 августа 2011

Можете ли вы вручную изменить отображение в файле linq to sql, чтобы оно не было нулевым.SP никогда не вернет ноль в любом случае.Файл в формате dbml, верно?

Я даже не знаю, возможно ли это.Я знаю, что было бы, если бы это было linq к юридическим лицам.

...