私はLINQ to SQLのを使用していている(3層のアプローチを使用して)プロジェクトを開発しています... 私は、ユーザーを更新したい...LINQ to SQLは::データ更新の問題
が、私は問題に直面する。それは私にエラーを与えることはありませんが、ユーザーの詳細を更新しないでください
ここではプログラムのシーケンスです。私は、この更新されたユーザの詳細を取得するときUpdateProfile.aspx
String currentUser = Session["BMUser"].ToString();
String displayName = txtDisplayName.Text;
String username = currentUser;
String emailAddress = txtEmailAddress.Text;
String secretQuestion = txtSecretQuestion.Text;
String secretAnswer = txtSecretAnswer.Text;
if (UserManager.UpdateProfile(username, displayName, emailAddress, secretQuestion, secretAnswer))
{
lblStatus.Text = "Profile Updated";
}
else
lblStatus.Text = "Unable to Update Profile";
のUserManagerで
はこの後
public class UserManager
{
public static bool UpdateProfile(String username, String displayName, String emailAddress, String secretQuestion, String secretAnswer)
{
// This method will return BM_User (BM_User in entity class generated by LINQ TO SQL)
BM_User user = UserCatalog.GetUserByName(username);
if (user != null)
{
user.DisplayName = displayName;
user.EmailAddress = emailAddress;
user.SecretQuestion = secretQuestion;
user.SecretAnswer = secretAnswer;
if (UserManagerDAO.UpdateUser(user, false))
{
//HttpContext.Current.Session["BMUser"] = userToUpdate;
return true;
}
else
return false;
}
else
return false;
}
}
し、最終的にUserManagerDAO
public class UserManagerDAO
{
public static bool UpdateUser(BM_User user, bool changeLoginDateTime)
{
BugManDataContext db = new BugManDataContext();
if (changeLoginDateTime == true)
user.LastLoginDate = DateTime.Now;
db.SubmitChanges();
return true;
}
}
BLLクラスです。それは私に以前の詳細を示しています。 BM_UserのPARAMTERがそれに接続されていないので、
は親切に、この問題は、新しいのDataContextを宣言しているあなたのUpdateUser方法で
hmm。 OKこの問題を解決する方法....私はdb.BM_User.Attach(ユーザー)を行う場合、それは私にエラーを与える。このエンティティを接続できません。他の場所で宣言されています。これは不可能です。 – Mohsan
私はあなたのクラス設計を再度見て、あなたの "UserManagerDAO"クラスのDataContextを扱うべきであると思うし、GetUserByName(username)もあなたのDAOクラスにあってはなりませんか? – CMS
GetUserByName(username)メソッドは、実際にUserManagerDAOクラスのGetUserByName(username)メソッドを呼び出すUserCatalogの一部です... – Mohsan