2016-07-15 80 views
0

我以下面的方式調用存儲過程。但是當我在sqlProfiler中觀察它時,實體框架沒有調用存儲過程。程序不會在使用DbRawSqlQry的實體框架中調用

objUnit.dbContext.Database.SqlQuery<ResellerCustomerFile>("USP_ResellerCustomerFile_DeleteFiles @CustomerId, @FileId, @IsFile", 
       new SqlParameter("@CustomerId", customerId), 
       new SqlParameter("@FileId", fileId), 
       new SqlParameter("@IsFile", 1)); 

如果我改變我的代碼加入.Tolist(),.FirstOrDefault()等在上面的語句然後調用記錄在SqlProfiler的結束,但它填補的DataReader,並開始從映射數據記錄讀者,因爲我已經通過TEntity

但我的存儲過程只更新記錄,不返回任何東西。現在我怎樣才能調用我的存儲過程。

回答

1

使用objUnit.dbContext.Database.ExecuteSqlCommand而不是objUnit.dbContext.Database.SqlQuery<ResellerCustomerFile>

SqlQuery預計返回值,這就是爲什麼你必須聲明ResellerCustomerFile作爲通用返回類型。

ExecuteSqlCommand是一個沒有返回值的命令,用這個方法直接執行你的命令。

objUnit.dbContext.Database.ExecuteSqlCommand("USP_ResellerCustomerFile_DeleteFiles @CustomerId, @FileId, @IsFile", 
    new SqlParameter("@CustomerId", customerId), 
    new SqlParameter("@FileId", fileId), 
    new SqlParameter("@IsFile", 1));