【发布时间】:2020-09-28 12:52:24
【问题描述】:
我打算创建这个例子来展示我的问题。
我的数据库中有一个表:
然后我创建了一个存储过程来按 Id 查找记录
CREATE PROCEDURE sp_get
@id INT
AS
BEGIN
SELECT *
FROM a
WHERE id = @id
END
接下来,我使用Database.SqlQuery()来执行这个存储过程:
a record = db.Database.SqlQuery<a>("sp_get @id", new SqlParameter("@id",id));
我收到此错误:
无法将类型 System.Data.Entity.Infrastructure.DbRawSqlQuery[test_sp_insert_edit_remove.Database.a] 隐式转换为“test_sp_insert_edit_remove.Database.a”
是的,我知道这是错误的,但我不知道如何解决这个错误。
帮我解决这个错误
【问题讨论】:
-
您面临什么问题/?
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
"I have no idea to solve this error. Help me fix that error"← 什么错误?您没有包含任何错误信息。是编译时错误吗?如果是这样,请包括完整的错误消息以及它出现在哪一行。这是您在运行时遇到的异常吗?如果是这样,包括整个异常,包括消息、堆栈跟踪、类型和嵌套异常的重复。 edit您的问题并包含这些详细信息。 -
我的目的是通过执行 SP_GET 获取记录,然后将其分配给@viveknuna 类型的记录变量
-
将
a record更改为var record。现在将鼠标悬停在var。它显示了什么?
标签: c# sql-server asp.net-mvc stored-procedures