2017-10-16 68 views
0

我有一個sp在表中插入數據。該表具有pk_id,doc_id和其他字段。插入後我想獲得所有基於doc_id的記錄插入並選擇所有數據實體框架和SP

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 i之後,使用此SP更新了我的EF模型。在我的context.cs文件中,我發現返回類型是int,如果我的SP只是插入,這是有道理的。

我跟着this文章使用複雜類型和功能導入更改返回類型。但是當我嘗試「獲取列信息」我得到這個「選定的SP或函數沒有列返回」

我想要的東西像this,而不是在希望第一個詮釋和第二個列表重新調整兩個列表。

什麼改變,我需要在我的代碼

這裏要提出的是,我非常呼喚我的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,......))行中得到一個錯誤。我認爲這是顯而易見的,因爲我得到兩個結果

任何幫助,將不勝感激

+0

所有存儲過程返回一個整數,以顯示過程是否成功執行。因此整數(1,0)。但是,爲什麼你要在一個'Insert'過程中結合不同的功能呢?保持它們分開並調用適當的代碼。 –

+0

如果我可以在一次調用中做到這一點,我不想做兩個數據庫調用。插入並顯示結果 – DotNetBeginner

回答

0

您可以撥打Database.SqlQuery您的DbContext:

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

你只需要提供一個DTO鍵入結果集。在這種情況下,對於

希望這有助於