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)
Address
is not null 而Duration
is 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)