プロファイルの保存を含むアプリケーションを作成しています。Linqを使用してデータベースにアクセスしていますが、プロファイルを保存するときに奇妙な問題が発生します。保存すると、DBに正しく書き込まれますが、ページを離れて戻っても、古い値はプロファイル形式のままです。
私のプロフィールページ:
if(!Page.IsPostBack) {
Profile p = Student.GetProfile(Int32.Parse(Session["userID"].ToString()));
if (p != null)
{
FirstNameTextBox.Text = p.FirstName;
LastNameTextBox.Text = p.LastName;
Address1TextBox.Text = p.Address1;
.....
}
そして私の学生クラス:
public static Profile GetProfile(int uID)
{
var profile = (from p in db.Profiles
where p.uID == uID
select p).FirstOrDefault();
return profile;
}
私はどこにも派手なキャッシュを行っていないので、古い値がどこに保存されているかわかりません...
** 編集 **
したがって、それはグローバルなLinqDataContextにかかっているようです。私の学生クラスでは、次のことがありました。
public class Student
{
private static LinqClassesDataContext db = new LinqClassesDataContext() { CommandTimeout = 36000 };
public static Profile GetProfile(int uID)
{
var profile = (from p in db.Profiles
where p.uID == uID
select p).FirstOrDefault();
return profile;
}
GetProfileメソッドに独自のDataContextを与えると、問題は解決しました。
Linqはまだ非常に新しいのですが、データベースへの同じアクセスを使用する多数のメソッドを持つクラスを作成するための最良の方法は何ですか?このようなグローバルコンテキストをお持ちですか?または、独自のデータコンテキストを使用する各メソッド?