插入并选择所有数据实体框架和SP

时间:2017-10-16 18:37:22

标签: c# sql-server entity-framework model-view-controller

我有一个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 :(得分:0)

您可以在dbcontext上调用 Database.SqlQuery

context.Database.SqlQuery<DtoType>("insertTable @param1",
     new SqlParameter("param1", 1));

您只需要为结果集提供DTO类型。在这种情况下,

希望这有帮助