我爲我的程序使用CodeFirst和存儲庫模式。我用作上下文的數據庫有一個我在SQL Server Management Studio中創建和測試的存儲過程,名爲dbo.sp_InsertTrackingInfo
。CodeFirst調用存儲過程
在我的基地倉庫類我有
public IEnumerable<T> ExecWithStoreProcedure(string query, int id)
{
return _context.Database.SqlQuery<T>("sp_InsertTrackingInfo @estimate", new SqlParameter("estimate", id));
}
在管理工作室的作品,其中估計被定義爲一個整數
EXEC sp_InsertTrackingInfo @estimate = '14'
所有操作與此例外取得工作中使用此查詢所以我知道我指向了正確的位置,我已經檢查過SQL Server Profiler,並且在調用此函數的任何時候都不會調用此過程。
任何人都有這方面的經驗?
感謝, Bmckie
編輯:
在倉庫的一個
using (var uow = UnitOfWorkManager.Begin())
{
uow.EstimateTrackingRepository.Insert(t);
uow.EstimateTrackingRepository.ExecWithStoreProcedure("exec sp_InsertTrackingInfo @estimate", t.EstimateId);
uow.Commit();
}
哪個代碼調用'ExecWithStoreProcedure'? – 2014-10-01 21:08:42
我將它添加到編輯 – 2014-10-01 21:10:03
我認爲你需要在'SqlQuery'之後或者在調用'ExecWithStoreProcedure'後執行類似'ToArray()'的查詢,程序是否在插入語句之後選擇查詢?如果它只是一個插入語句,可能你可以使用'ExecuteSqlCommand'。 – 2014-10-01 21:16:22