View Full Version : چطوری با ef به گرید وصل بشم؟
  
RIG000
سه شنبه 05 شهریور 1392, 15:36 عصر
private void Form1_Load(object sender, EventArgs e)
        {
        AdoEf2Entities  adodb = new AdoEf2Entities();
          Jadval j = new Jadval();
           
        }
میشه مابقی رو برام بنویسید. ؟
RIG000
سه شنبه 05 شهریور 1392, 16:04 عصر
این خط کد درست هست؟
 AdoEf2Entities  adodb = new AdoEf2Entities();
          Jadval j = new Jadval();
          dataGridView1.DataSource = adodb.Jadvals.ToList();
Direlap
سه شنبه 05 شهریور 1392, 16:11 عصر
بله درسته و میتونید به این شکل به گرید ویو وصل بشید.
RIG000
سه شنبه 05 شهریور 1392, 16: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, 16: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, 16: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, 16:49 عصر
بجای
ad.DeleteObject(del);
از این استفاده کنید:
ad.Jadvals.DeleteObject(del);
و برای ثبت هم از این:
ad.Jadvals.AddObject(del);
RIG000
سه شنبه 05 شهریور 1392, 16:55 عصر
بجای
ad.DeleteObject(del);
از این استفاده کنید:
ad.Jadvals.DeleteObject(del);
و برای ثبت هم از این:
ad.Jadvals.AddObject(del);
 دقیقا خاستم از این روش استفاده کنم اما نمیشناسه این متد ها رو !!!!
RIG000
سه شنبه 05 شهریور 1392, 17: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, 17: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, 17: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, 17:58 عصر
پس چرا اینا تو جدول تو sqlserver ثبت نمیشن؟؟؟؟؟؟؟؟؟؟
اطلاعاتم اونجا نیستن!!
Direlap
سه شنبه 05 شهریور 1392, 18:22 عصر
کوئری شما این قسمتش مشکل داره :
فکر کنم این درست باشه اما چرا ارور میده؟
            
                      where d == dataGridView1.CurrentRow.Cells[0].Value
                      
 
باید جلوی شرط بنویسید با کدوم فیلد از جدول شما یکی باشه.
where d.fieldemoredenazar
و این خطا برای اونه که نتونسته چیزی پیدا کنه و نمیشه نال رو از جدول حذف کرد.
بهتره قبل از حذف چک کنید ببینید کوئری شما نال نباشه.
Direlap
سه شنبه 05 شهریور 1392, 18:25 عصر
یعنی یکبار کل گرید رو لود مجدد میکنه!!!
 
اینجا که بعد ذخیره اینو نوشتین :
dataGridView1.DataSource = query;
باعث لود مجدد گرید میشه.
Direlap
سه شنبه 05 شهریور 1392, 18:27 عصر
پس چرا اینا تو جدول تو sqlserver ثبت نمیشن؟؟؟؟؟؟؟؟؟؟
اطلاعاتم اونجا نیستن!!
 
اگه منظورتون اینه که بعد هربار اجرا اطلاعات ذخیره نمیشن راه حلش اینه :
پراپرتی دیتابیس رو به Do not copy تغییر بدید.
RIG000
چهارشنبه 06 شهریور 1392, 09:26 صبح
مرسی از همتون...
RIG000
چهارشنبه 06 شهریور 1392, 10:20 صبح
اگه منظورتون اینه که بعد هربار اجرا اطلاعات ذخیره نمیشن راه حلش اینه :
پراپرتی دیتابیس رو به Do not copy تغییر بدید.
 وقتی این کار رو میکنم این ارور رو میده!!
The underlying provider failed on Open.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.