2016-09-11 15 views
1

私はASP.NETコアWeb APIを持っています。私はいくつかの値を計算するために、ストアドプロシージャと生のSQLを使用しています:私は私のテーブルに新しいレコードを挿入するとストアドプロシージャがefコアの古い値を返します

private TestContext context; 

public TestRepository(TestContext tContext) 
{ 
    context = tContext; 
}  

public IEnumerable<test> GetTests(User user) 
{ 
    return context.tests.FromSql("EXECUTE dbo.test_GETALL {0}", user.code).ToList(); 
} 

、結果は変更する必要がありますが、このコードは古い値を返します。どのように私はこの問題を解決する?

+1

データベースに新しいデータがありますか? – Sampath

+1

どのようにAPIを呼び出していますか? jquery ajaxやどのような方法ですか?リクエストがキャッシュされているように聞こえます。プロファイラトレースを実行して、データベースがヒットしていることを確認して確認できます。 – firste

+0

@Sampathはい、新しいデータを挿入した後、ストアドプロシージャを再度呼び出します。古い値を返します。 –

答えて

0

TestContextがEFに接続されている場合、これが問題であるか、そうでなければトランザクションが正しく構成されていない可能性があります。

0

私はこれと同じような問題がありました。

はあなたstartup.csをチェックして、サービスとリポジトリ.AddSingletonていないことを確認してください。

これらはあなたがより多くの詳細が必要な場合は、ここでmy SO question that I believe relates to your situationがある

services.AddSingleton<IYourService, YourService>(); //Needs to be AddScoped 
services.AddSingleton<IYourRepository, YourRepository>(); //Also needs to be AddScoped 

(あなたはあまりにも.AddTransientを使用することができるかもしれません).AddScopedに変更する必要があります。

希望すると便利です。

関連する問題