【发布时间】:2018-03-28 08:49:00
【问题描述】:
我有一个在表中插入数据的 sp。该表有pk_id、doc_id等字段。插入后我想根据 doc_id 获取所有记录
ALTER PROCEDURE [dbo].[insertTable]
@doc_id int
,......
AS
BEGIN
// Insert
INSERT INTO [dbo].[Table]
(
doc_id
,..........
)
VALUES
(
@doc_id
,.......
)
// Select all records based on doc_id
select * from [dbo].[Table] where doc_id = @doc_id
END
创建 Sp 后,我用这个 SP 更新了我的 EF 模型。在我的 context.cs 文件中,我发现返回类型是 int,如果我的 SP 只是插入,这是有道理的。
我按照this 文章使用复杂类型和函数导入来更改返回类型。但是当我尝试“获取列信息”时,我得到这个“选定的 SP 或函数不返回任何列”
我想要this 之类的东西,但不是在需要第一个 int 和第二个列表中重新调整两个列表。
我需要对我的代码进行哪些更改
这是我在控制器中调用 sp 的方式
List<Table> List = new List<Table>();
using (Entities entities = new Entities())
List = (entities.insertTable(1, ......)).ToList();
var result = new { List = List != null ? List: new List<Table>()};
return Json(result, JsonRequestBehavior.AllowGet);
但这不起作用。我在 List = (entities.insertTable(1, ......)).ToList(); 行中遇到错误我认为这很明显,因为我得到了两个结果集
任何帮助将不胜感激
【问题讨论】:
-
所有存储过程都返回一个整数来表示该过程是否执行成功。因此整数 (1,0)。但是为什么要在
Insert过程中组合不同的功能呢?将它们分开并调用相应的代码。 -
如果我可以一次调用,我不想进行两次数据库调用。插入并显示结果
标签: c# sql-server entity-framework model-view-controller