c# – 无法使用Entity Framework 6获取存储过程结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 无法使用Entity Framework 6获取存储过程结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2110字,纯文字阅读大概需要4分钟。
内容图文
![c# – 无法使用Entity Framework 6获取存储过程结果](/upload/InfoBanner/zyjiaocheng/773/f5d41e346fa74716b4fb8155b7044942.jpg)
我有一个存储过程,它返回0或1,具体取决于我的数据库中是否存在指定的电子邮件地址:
CREATE PROCEDURE [DatabaseSchema].[EmailAddressIsDuplicate] (@emailAddress nvarchar(255))
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(
SELECT *
FROM [DatabaseSchema].[EmailUpdatesRegistrant]
WHERE EmailAddress = @emailAddress
)
RETURN 1
ELSE
RETURN 0
RETURN 0
END
GO
我试图从Entity Framework 6数据库上下文中获取此存储过程的结果:
using (DatabaseContext dbContext = new DatabaseContext())
{
ObjectParameter param = new ObjectParameter("emailAddress", typeof(bool));
var result = dbContext.EmailAddressIsDuplicate(emailAddress);
}
我收到很多错误.
错误#1:使用上面的代码,var结果始终设置为-1.
错误#2:我尝试导航到编辑函数导入并将返回集合设置为布尔标量值.这会引发以下错误:
The data reader returned by the store data provider does not have enough columns for the query requested.
错误#3:我回去并将编辑功能导入返回值设置为无.然后我尝试了以下代码:
using (DatabaseContext dbContext = new DatabaseContext())
{
var p = new SqlParameter("@emailAddress", emailAddress);
var result = dbContext.Database.SqlQuery<bool>("DatabaseSchema.EmailAddressIsDuplicate", p);
}
没有立即错误抛出,但我不知道我是否可以从var结果中获取有用的数据.尝试将结果转换为bool会引发以下错误:
Cannot convert type ‘System.Data.Entity.Infrastructure.DbRawSqlQuery’ to ‘bool’
关于如何查看此存储过程(0或1)的结果的任何想法?
解决方法:
您可以尝试在存储过程签名中添加输出参数(@result):
CREATE PROCEDURE [DatabaseSchema].[EmailAddressIsDuplicate]
(@emailAddress nvarchar(255), @result bit out)
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT *
FROM [DatabaseSchema].[EmailUpdatesRegistrant]
WHERE EmailAddress = @emailAddress)
SET @result = 1
ELSE
SET @result = 0
RETURN @result
END
GO
(您必须相应地重新定义您的EF模型函数定义)
using (DatabaseContext dbContext = new DatabaseContext())
{
ObjectParameter isDuplicate = new ObjectParameter("isDuplicate", typeof(bool));
var result = dbContext.EmailAddressIsDuplicate(emailAddress, isDuplicate);
bool emailIsDuplicate = (bool)isDuplicate.Value;.
}
如果要使用out参数直接调用存储过程,可以遵循以下建议:
Database.SqlQuery calling stored procedure that has multiple output parameters
内容总结
以上是互联网集市为您收集整理的c# – 无法使用Entity Framework 6获取存储过程结果全部内容,希望文章能够帮你解决c# – 无法使用Entity Framework 6获取存储过程结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。