EDMX 生成 Nullable bool 而不是 bool

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

在此输入图像描述

提前致谢 :)

Rah*_*hul 2

不是解决您的问题,而是替代方案。如果您使用表变量并返回它,就像

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)