Mis*_*sky 6 c# sql sql-server stored-procedures entity-framework
我编写了一个返回一个选择的简单存储过程。
当我更新EDMX model并添加新的存储过程时,我想知道返回的结果有一个 Nullable bool(在存储过程中我总是返回 0 或 1)。
为什么它生成 Nullable bool 而不是 bool?如何更改存储过程以使其生成 bool?
这是存储过程(这不是真正的存储过程,它只是为了演示问题):
ALTER PROCEDURE [dbo].[TestBool]
AS
BEGIN
    SET NOCOUNT ON;
    SELECT  Title,
            CONVERT(BIT, IIF([Address] = 'America', 1, 0)) IsAmerica,
            CONVERT(BIT, IIF(Duration > 100, 1, 0)) IsLong
    FROM    dbo.Events
    WHERE   UserId > 10
END
Run Code Online (Sandbox Code Playgroud)
Addressis not null 而Durationis null (但这并不重要,因为这两个值都生成为 Nullable bool)。
这是结果的图像EDMX。

提前致谢 :)
不是解决您的问题,而是替代方案。如果您使用表变量并返回它,就像
ALTER PROCEDURE [dbo].[TestBool]
AS
BEGIN
DECLARE @tab table (
Title varchar(100) not null,
IsAmerica bit not null,
IsLong bit not null
);
    SET NOCOUNT ON;
    INSERT INTO @tab(Title,IsAmerica,IsLong)
    SELECT  Title,
            CONVERT(BIT, IIF([Address] = 'America', 1, 0)) IsAmerica,
            CONVERT(BIT, IIF(Duration > 100, 1, 0)) IsLong
    FROM    dbo.Events
    WHERE   UserId > 10
    SELECT Title,
           IsAmerica,
           IsLong 
           FROM @tab;
END
Run Code Online (Sandbox Code Playgroud)