2

Entity Framework に奇妙な問題があります。

Windows Server に SQL Server データベースがあり、Entity Framework を介してアプリからアクセスしています。

データベースのエントリを変更しましたが、Entity Framework を使用するアプリでは、どこにも保存されていませんが、古い値が引き続き表示されます。

これは何であり、これを修正する方法は?

編集:
次のようにデータベースからデータを取得しています:

(from p in _myEF.master_Items where p.id == userId 
 select p.Location).FirstOrDefault();

EDIT2 :
Visual Studio を介してローカルで開始すると、新しい値が表示されます。デプロイされたバージョンを使用すると、DB に存在しない古い値が表示されます

EDIT3:これが私の接続文字列です<add name="MyEntities" connectionString="metadata=res://*/MyData.csdl|res://*/MyData.ssdl|res://*/MyData.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=foo;initial catalog=MyDb;persist security info=True;user id=Admin;password=xxxx;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

4

1 に答える 1

4

Entity Framework は、DbContextインスタンス内でオブジェクトを内部的にキャッシュします。これらは短命であることを意図しており、キャッシュの目的は、同じ ID を持つエンティティを検索するたびに、そのエンティティの同じ実際のインスタンスを取得できるようにすることです。

これは、Entity Framework を使用する場合DbContextstaticフィールドに a を格納しないことを意味します。リクエストごとに新しいものを作成します。

于 2013-05-15T14:29:24.903 に答える