PDA

View Full Version : مشکل update با linq



sinayas
دوشنبه 27 آذر 1391, 20:35 عصر
سلام به همه

من تو سایت قسمتی رو دارم که تو کاربر میتونه مشخصات خودش رو ویرایش بکنه .

ظاهرا همه کدها درست نوشته شده و برنامه بدون مشکل اجرا میشه .
ولی اطلاعات بروز نمیشه .
کد ها رو میزارم .
اگه من رو رهنمایی بکنید که چرا مقدار فیلد ها عوض نمیشه ممنون میشم .

کدهای گرفتن اطلاعات کاربر :

DataClassesDataContext db = new DataClassesDataContext();

Member edit = db.Members.Single(n=> n.UserName==Session["MemberID"]);

txtName.Text = edit.Name;
txtFamily.Text = edit.Family;
txtTel.Text =Convert.ToString( edit.Tel);
txtmobile.Text =Convert.ToString( edit.Mobile);
txtAddress.Text = edit.Address;
lblemail.Text = edit.Email;
lblUserName.Text = edit.UserName;


کد های مربوط به بروز رسانی


DataClassesDataContext db = new DataClassesDataContext();
Member update = new Member();

update.Name = txtName.Text;
update.Family = txtFamily.Text;
update.Tel = Convert.ToInt32(txtTel.Text);
update.Mobile = Convert.ToInt32(txtmobile.Text);
update.Pass = txtPass.Text;
update.Email = lblemail.Text;
update.UserName = lblUserName.Text;



db.SubmitChanges();


اگه راهنمایی کنید خیلی خوشحال میشم .

alihassanabadi
سه شنبه 28 آذر 1391, 15:49 عصر
سلام
خب اگه تو دو باتون جدا نوشتی طبیعتا آپدیت نمیشه چون باید پیدا کنی بعد مقدار دهی کنید بعد SubmitChanges
تو قسمت اول فقط پیدا کردی و تو قسمت دوم اومدید فقط یک شی از کلاس Member ساختید و فیلدهاشو مقدار دهی کردید وسلام
کل ویرایش شما میشه قسمت اول کدتون بعلاوه SubmitChanges کن
یعنی


DataClassesDataContext db = new DataClassesDataContext();

Member edit = db.Members.Single(n=> n.UserName==Session["MemberID"]);

txtName.Text = edit.Name;
txtFamily.Text = edit.Family;
txtTel.Text =Convert.ToString( edit.Tel);
txtmobile.Text =Convert.ToString( edit.Mobile);
txtAddress.Text = edit.Address;
lblemail.Text = edit.Email;
lblUserName.Text = edit.UserName;
db.SubmitChanges();




یا قسمت دوم رو اینجوری تغییر بدید


Member update = db.Members.Single(n=> n.UserName==Session["MemberID"]);


موفق باشید.

sinayas
سه شنبه 28 آذر 1391, 17:40 عصر
ممنون از توجه شما .
تو دوتا باتون نیست .
قسمت اول تو page_load صفحه هست . و وقتی کاربر وارد این صفحه میشه اطلاعاتش رو نمایش میده .

کد قسمت دوم یک باتون هست که بعد از انجام تغییرات کاربر باید فیلد ها رو بروز رسانی بکنه که این کار رو انجام نمیده .

تغییراتی رو که شما گفتین رو انجام دادم . ولی باز هم نشد .
ممنون میشم بیشتر راهنمایی کنید .

mehrbani
سه شنبه 28 آذر 1391, 19:56 عصر
با سلام ،
احتمالا Optimistic Concurrency لینک رو فعال کردین.
با استفاده از SQL Server Profiler ببینین Linq داره چه کد SQL ای رو تولید و اجرا می کنه

sinayas
سه شنبه 28 آذر 1391, 23:45 عصر
سلام
راستش من سر در نیاوردم .
یک سری دستورات عجیب و غریب بود و من چیزی نفهمیدم .
ممنون میشم بیشتر راهنمایی بکنید .

alihassanabadi
چهارشنبه 29 آذر 1391, 11:23 صبح
سلام

قسمت اول تو page_load صفحه هست . و وقتی کاربر وارد این صفحه میشه اطلاعاتش رو نمایش میده .
بله چون تو قسمت اول(Page_Load) تکست باکس هات مقدار دهی میشن و اگه کاربر تغییرشون هم بده بازم فایده نداره چون تو پیج لود ست شدن
اینجوری تغییرش بده


if (!IsPostBack)
{
DataClassesDataContext db = new DataClassesDataContext();
Member edit = db.Members.Single(n => n.UserName == Session["MemberID"]);
txtName.Text = edit.Name;
txtFamily.Text = edit.Family;
txtTel.Text = Convert.ToString(edit.Tel);
txtmobile.Text = Convert.ToString(edit.Mobile);
txtAddress.Text = edit.Address;
lblemail.Text = edit.Email;
lblUserName.Text = edit.UserName;
}

و در نهایت کد دکمه ویرایشت میشه این


protected void btnEdit_Click(object sender, EventArgs e)
{
DataClassesDataContext db = new DataClassesDataContext();
Member edit = db.Members.Single(n => n.UserName == Session["MemberID"]);
txtName.Text = edit.Name;
txtFamily.Text = edit.Family;
txtTel.Text = Convert.ToString(edit.Tel);
txtmobile.Text = Convert.ToString(edit.Mobile);
txtAddress.Text = edit.Address;
lblemail.Text = edit.Email;
lblUserName.Text = edit.UserName;
db.SubmitChanges();
}


موفق باشید.

sinayas
چهارشنبه 29 آذر 1391, 13:47 عصر
ممنون از شما
مشکل حل شد . حالا اگه براتون امکان داره یه توضیح کوچیگی در مورد این (IsPostBack!) بدین ممنون میشم .
بگین که کلا چه کاری انجام میده (چی رو چک میکنه) و کجاها کاربرد داره .
خیلی ممنون از شما

alihassanabadi
چهارشنبه 29 آذر 1391, 13:53 عصر
خواهش میکنم
شما با مفهوم PostBack آشنایی دارید؟
اون if با عث میشه که او تیکه کد زمانی که برای اولین بار درخواست نمایش صفحه به سرور ارسال میشه اجرا شه
نتیجه=>برای اولین بار آیا پست بک رخ داده است= خیر , در نتیجه نات خیر=بله پس کد اجرا میشود.
موفق باشید.

sinayas
چهارشنبه 29 آذر 1391, 15:51 عصر
بازهم ممنون از اینکه راهنمایی کاملی انجام دادین .