PDA

View Full Version : مشکل در ویرایش اطلاعات با Entity Framework



samiasoft
سه شنبه 24 مرداد 1396, 17:06 عصر
سلام دوستان

من یه دیتابیس دارم که 3 ستون داره و ستون ایدی اون یونیک و اتونامبر هستش:

حال برای ویرایش کردن ردیف انتخاب شده دیتاگرید پروسیجر زیر رو نوشتم :
CREATE PROCEDURE dbo.pedit @id int , @name nvarchar(50), @tell nvarchar(50)
AS
update Table1 set name=@name , tell= @tell


where id=@id


RETURN

اینم دستور ویرایش :

Database1Entities1 database = new Database1Entities1();

textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();

database.pedit(Convert.ToInt32(textBox1.Text), textBox2.Text, textBox3.Text);



dataGridView1.DataSource = database.Table1.ToList();

متاسفانه وقتی دستور ویرایش رو میزنم تغییری در دیتاگرید صورت نمیگیرد ! و وقتی پروژه رو باز بسته میکنم میبنم تغییرات صورت گرفته است!

دلیلش چیه به نظرتون ؟!!!

ولی اصولا در دستور database.pedit(); نباید از من ردیف رو بخواد چون خودش پرمیکنه!
ولی اجازه نمیده اینطور بنویسم:

database.pedit( textBox2.Text, textBox3.Text);

ژیار رحیمی
سه شنبه 24 مرداد 1396, 22:24 عصر
سلام بعد از اعمال تغییرات Context رو مجدد بسازید.

Database1Entities1 database = new Database1Entities1();
textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
database.pedit(Convert.ToInt32(textBox1.Text), textBox2.Text, textBox3.Text);
database = new Database1Entities1();
dataGridView1.DataSource = database.Table1.ToList();




//روش دیگر
Database1Entities1 database = new Database1Entities1();
var tbl =database.Table1.Find( Convert.ToInt32( dataGridView1.CurrentRow.Cells[0].Value.ToString()));
if(tbl==null)return;
tbl.name=textBox2.Text;
tbl.tell=textBox3.Text;
database.SaveChanges();
database = new Database1Entities1();
dataGridView1.DataSource = database.Table1.ToList();

samiasoft
سه شنبه 24 مرداد 1396, 23:00 عصر
با تشکر از شما جناب رحیمی

باور کنید من چند ساعت دربه در دنبال رفع این مشکل بودم و نمیدونستم باید این یک خط کد زیر رو نوشت

database = new Database1Entities1();


ولی چرا باید
Context رو مجدد ساخت؟ اخه هنگام اد کردن من اینو نمیسازم یعنی نیاز نشده این دستور رو وارد کنم ...پس اونجام وارد کنم؟ ینی در دستور زیر هم بزارمش؟درحالی که به درستی کارمیکند

database.psave( textBox2.Text, textBox3.Text);


dataGridView1.DataSource = database.Table1.ToList();


یه توضیح کلی میدید کجاها اینو بزاریم؟