我有一个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();我认为很明显,因为我得到两个结果集
非常感谢任何帮助
答案 0 :(得分:0)
您可以在dbcontext上调用 Database.SqlQuery :
context.Database.SqlQuery<DtoType>("insertTable @param1",
new SqlParameter("param1", 1));
您只需要为结果集提供DTO类型。在这种情况下,表。
希望这有帮助