0
我有一個EF Code First和MSSQL用戶定義函數有趣的問題。 我寫了一個數據庫函數,它返回一個標量值,我想將該函數映射到我的DbContext。實體框架代碼第一個函數
基於信息,我發現我寫這個:
[DbFunction("AppDbContext", "GetNextDocumentNumber")]
public virtual int GetNextDocumentNumber()
{
return ((IObjectContextAdapter)this)
.ObjectContext
.ExecuteStoreCommand("GetNextDocumentNumber");
}
我也寫一個簡單的單元測試,以檢查是否函數返回正確的值。 問題是,上面的代碼返回-1。當我在SMSS上執行功能時,我會得到正確的結果。
在不同的網站上進行搜索後,我找到了解決辦法thatlooks這樣的:
public virtual int GetNextDocumentNumber()
{
return this.Database
.SqlQuery<int>("select dbo.GetNextDocumentNumber()")
.Single();
}
在這種情況下,我得到正確的值。
我只想知道以前的代碼有什麼問題,或者我做錯了什麼。在這兩種情況下,我都會獲得價值。但只有在一種情況下,值纔是正確的。
謝謝!在LINQ表達式中調用函數解決了我的問題。 – TomAsh