0
我試圖將表傳遞給存儲過程以進行批量插入更新。我在表中爲數據庫創建了一個自定義類型,並使用table參數(自定義類型)創建了一個過程。在存儲過程中傳遞表的最佳方式是什麼
但是,當我在實體框架中更新模型時,它不會生成傳遞表參數的正確代碼。
以下是我的存儲過程的聲明:
CREATE PROCEDURE [dbo].[TimeClock_UpdateTimeClockData]
@dateTimeFrom date,
@dateTimeTo date,
@employeeEarnings EmployeeEarningsTable readonly
AS
BEGIN
--- insert/update operations
END
這是實體框架生成的代碼:
public virtual int TimeClock_UpdateTimeClockData(Nullable<System.DateTime> dateTimeFrom, Nullable<System.DateTime> dateTimeTo)
{
var dateTimeFromParameter = dateTimeFrom.HasValue ?
new SqlParameter("dateTimeFrom", dateTimeFrom) :
new SqlParameter("dateTimeFrom", typeof(System.DateTime));
var dateTimeToParameter = dateTimeTo.HasValue ?
new SqlParameter("dateTimeTo", dateTimeTo) :
new SqlParameter("dateTimeTo", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery("TimeClock_UpdateTimeClockData @dateTimeFrom,@dateTimeTo", dateTimeFromParameter, dateTimeToParameter);
}
很簡單,就是忽略了表值參數。
Entity Framework將表傳遞給過程是否有任何解決方法?
或者是否有任何替代方法將多個記錄傳遞給存儲過程?我知道Xml參數,但我想避免這種情況,因爲我想傳遞更大的數據集並且不想引起任何性能問題。
嘗試使用'ExecuteSqlCommand'或'SqlQuery'代替'ExecuteStoreQuery',只是改變它。 –