我有一个在表格中插入数据的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只是insert,这是有意义的。
我遵循了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()中得到一个错误;我认为这是很明显的,因为我得到了两个结果集
任何帮助都将不胜感激。
发布于 2017-10-17 03:24:27
您可以在dbcontext上调用Database.SqlQuery:
context.Database.SqlQuery<DtoType>("insertTable @param1",
new SqlParameter("param1", 1));您只需要为结果集提供一个DTO类型。在本例中为表。
希望这能有所帮助
https://stackoverflow.com/questions/46776967
复制相似问题