2016-07-22 3 views
0

EF Code FirstとMSSQLのユーザー定義関数に興味深い問題があります。 スカラー値を返すデータベース関数を作成し、その関数をDbContextにマップしたいとします。私はまた、関数が正しい値を返すかどうかを確認するための簡単なユニットテストを書くEntity Frameworkコードファーストファンクション

[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(); 
} 

私は正しい値を取得します。

私は、前のコードの何が間違っているのか、何が間違っているのかを知りたいだけです。どちらの場合も、私は価値があります。しかし、1つのケースの値が正しいだけです。

答えて

0

Thisは、必要なものに対する回答を提供する場合があります。

+0

ありがとうございます! LINQ式の関数呼び出しは私の問題を解決しました。 – TomAsh