PDA

View Full Version : چطوری با ef به گرید وصل بشم؟



RIG000
سه شنبه 05 شهریور 1392, 14:36 عصر
private void Form1_Load(object sender, EventArgs e)
{
AdoEf2Entities adodb = new AdoEf2Entities();
Jadval j = new Jadval();

}
میشه مابقی رو برام بنویسید. ؟

RIG000
سه شنبه 05 شهریور 1392, 15:04 عصر
این خط کد درست هست؟

AdoEf2Entities adodb = new AdoEf2Entities();
Jadval j = new Jadval();
dataGridView1.DataSource = adodb.Jadvals.ToList();

Direlap
سه شنبه 05 شهریور 1392, 15:11 عصر
بله درسته و میتونید به این شکل به گرید ویو وصل بشید.

RIG000
سه شنبه 05 شهریور 1392, 15:14 عصر
دوستان این کد ها رو ببینید . از خود ویژوال دیتابیس ساختم. اطلاعات رو نمایش میگیرم و تو گرید نمایش میدم. و ثبت هم میکنم. اما موقعی که میام تو محیط سورس و دوباره اجرا میگیرم دیگه رکورد هام نیست!!! چرا؟

private void Form1_Load(object sender, EventArgs e)
{
AdoEf2Entities adodb = new AdoEf2Entities();
dataGridView1.DataSource = adodb.Jadvals.ToArray();
}
private void button2_Click(object sender, EventArgs e)
{
AdoEf2Entities ad = new AdoEf2Entities();
Jadval j = new Jadval();

j.id = txtid.Text;
j.name = txtname.Text;
j.family = txtfamily.Text;
j.address = txtaddress.Text;

ad.AddToJadvals(j);
ad.SaveChanges();
Form1_Load(sender, e);

}

RIG000
سه شنبه 05 شهریور 1392, 15:31 عصر
فکر کنم این درست باشه اما چرا ارور میده؟


AdoEf2Entities ad = new AdoEf2Entities();
var del = from d in ad.Jadvals
where d == dataGridView1.CurrentRow.Cells[0].Value
select d;

ad.DeleteObject(del);
ad.SaveChanges();
MessageBox.Show("del","delete");
به deleteobject ارور میگیره !!!
The object cannot be deleted because it was not found in the ObjectStateManager

khokhan
سه شنبه 05 شهریور 1392, 15:44 عصر
فکر کنم این درست باشه اما چرا ارور میده؟


AdoEf2Entities ad = new AdoEf2Entities();
var del = from d in ad.Jadvals
where d == dataGridView1.CurrentRow.Cells[0].Value
select d;

ad.DeleteObject(del);
ad.SaveChanges();
MessageBox.Show("del","delete");
به deleteobject ارور میگیره !!!
The object cannot be deleted because it was not found in the ObjectStateManager

با مال خودت ست کن :

kalaEntities context = new kalaEntities();
var query = from data in context.k_info
orderby data.k_id
select data;
dataGridView1.DataSource = query;

sh.eng
سه شنبه 05 شهریور 1392, 15:49 عصر
بجای


ad.DeleteObject(del);

از این استفاده کنید:


ad.Jadvals.DeleteObject(del);


و برای ثبت هم از این:


ad.Jadvals.AddObject(del);

RIG000
سه شنبه 05 شهریور 1392, 15:55 عصر
بجای


ad.DeleteObject(del);

از این استفاده کنید:


ad.Jadvals.DeleteObject(del);


و برای ثبت هم از این:


ad.Jadvals.AddObject(del);

دقیقا خاستم از این روش استفاده کنم اما نمیشناسه این متد ها رو !!!!

RIG000
سه شنبه 05 شهریور 1392, 16:02 عصر
kalaEntities context = new kalaEntities();
var query = from data in context.k_info
orderby data.k_id
select data;
dataGridView1.DataSource = query;


این دوتا رو از کجا اوردی؟ کانتکست ساخته شده بانک ماست! چطور توش ای دی کشیدی بیرون؟!! پس جدول چی میشه این وسط؟

khokhan
سه شنبه 05 شهریور 1392, 16:20 عصر
kalaEntities context = new kalaEntities();
var query = from data in context.k_info
orderby data.k_id
select data;
dataGridView1.DataSource = query;


این دوتا رو از کجا اوردی؟ کانتکست ساخته شده بانک ماست! چطور توش ای دی کشیدی بیرون؟!! پس جدول چی میشه این وسط؟

یعنی چی اونوقت ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :لبخند:

RIG000
سه شنبه 05 شهریور 1392, 16:45 عصر
کد رو اینجوری تغییر دادم همه کارها رو میکنه اما یه مشکلی داره که اونم بعد از حذف کل گرید رو اپدیت میکنه...

int value = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);
AdoEf2Entities2 ad = new AdoEf2Entities2();
Jadval j= new Jadval ();
var query = (from data in ad.jadvals
where data.id == value
select data).FirstOrDefault();

ad.DeleteObject(query);
ad.SaveChanges();
dataGridView1.DataSource = query;
MessageBox.Show("del","delete");
Form1_Load(sender, e);
یعنی یکبار کل گرید رو لود مجدد میکنه!!!

RIG000
سه شنبه 05 شهریور 1392, 16:58 عصر
پس چرا اینا تو جدول تو sqlserver ثبت نمیشن؟؟؟؟؟؟؟؟؟؟
اطلاعاتم اونجا نیستن!!

Direlap
سه شنبه 05 شهریور 1392, 17:22 عصر
کوئری شما این قسمتش مشکل داره :


فکر کنم این درست باشه اما چرا ارور میده؟



where d == dataGridView1.CurrentRow.Cells[0].Value



باید جلوی شرط بنویسید با کدوم فیلد از جدول شما یکی باشه.


where d.fieldemoredenazar

و این خطا برای اونه که نتونسته چیزی پیدا کنه و نمیشه نال رو از جدول حذف کرد.

بهتره قبل از حذف چک کنید ببینید کوئری شما نال نباشه.

Direlap
سه شنبه 05 شهریور 1392, 17:25 عصر
یعنی یکبار کل گرید رو لود مجدد میکنه!!!

اینجا که بعد ذخیره اینو نوشتین :


dataGridView1.DataSource = query;

باعث لود مجدد گرید میشه.

Direlap
سه شنبه 05 شهریور 1392, 17:27 عصر
پس چرا اینا تو جدول تو sqlserver ثبت نمیشن؟؟؟؟؟؟؟؟؟؟
اطلاعاتم اونجا نیستن!!

اگه منظورتون اینه که بعد هربار اجرا اطلاعات ذخیره نمیشن راه حلش اینه :

پراپرتی دیتابیس رو به Do not copy تغییر بدید.

RIG000
چهارشنبه 06 شهریور 1392, 08:26 صبح
مرسی از همتون...

RIG000
چهارشنبه 06 شهریور 1392, 09:20 صبح
اگه منظورتون اینه که بعد هربار اجرا اطلاعات ذخیره نمیشن راه حلش اینه :

پراپرتی دیتابیس رو به Do not copy تغییر بدید.
وقتی این کار رو میکنم این ارور رو میده!!

The underlying provider failed on Open.