نمایش نتایج 1 تا 31 از 31

نام تاپیک: درج و اپدیت چندین رکورد با entity framework

  1. #1

    درج و اپدیت چندین رکورد با entity framework

    سلام
    من از entity framework و linq استفاده میکنم
    یک جدول دارم برای کارمندان

    نام جدول:person

    که شامل فیلدهای:(کد پرسنلی و پاداش هستش)
    code
    padash

    حالا میخوام به صورت گروهی چندین کد پرسنلی را ثبت کنم به همراه پاداش و یا در صورت موجود بودن پاداش را ویرایش کنم

    مثلا ببینید در سیستم من همه کارمندان پاداش دریافت نمیکنند و فقط برخی از انها پاداش دریافت میکنند
    حالا در اینجا عمل اپدیت و درج رکورد فکر کنم باید موازی با هم باشند و با هم انجام بگیرند

    یعنی فرضا من میخوام به پاداش کارمندان اضافه کنم و همینطور در همین مرحله امکان داره یکی از کارمندان به این جدول اضافه بشه برای دریافت پاداش

    مثال زیر را ببینید:
    code padash
    100 1
    100 2

    در اینجا کد 1 و 2 پاداش دریافت میکنند و میخوام مثلا پاداش را بکنم 200 و در همین مرحله وقتی روی دکمه ذخیره کلیک کردم یک کارمند دیگه هم اضاضه بشه
    که جدول من باید بشه این:
    code padash
    200 1
    200 2
    200 3

    جستجو کردم و BulkInsert پیشنهاد شده ولی خب چون عمل درج و ویرایش با هم هستند نمیدونم چکار کنم

  2. #2

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    سلام، از متد AddOrUpdate استفاده کردین؟ نتیجه؟

  3. #3

    نقل قول: درج و اپدیت چندین رکورد با entity framework

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

  4. #4
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    860

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    سلام

    //با           //linq

    List<person> pp = new List<person >();
    person p1=new person
    {
    name = "sara" ,
    code = "1"
    };
    person p2 = new person
    {
    name = "reza" ,
    code = "2"
    };
    person p3 = new person
    {
    name = "ali",
    code="3"
    };

    pp.AddRange(new List<person>( ) {p1 ,p2,p3});
    //به جای
    //DataContext1
    //باید نام دیتا کانتکس خودتان را بنویسید


    DataContext1 con = new DataContext1();
    con.persons.InsertAllOnSubmit(pp);
    con.SubmitChanges();

  5. #5

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    اخه معلوم نیست چندتا کارمند قراره درج بشه یا فیلد پاداش اونها ویرایش بشه
    این روش به نظر نمیره روش اصولی باشه

  6. #6
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: درج و اپدیت چندین رکورد با entity framework



    List<Person> persons = new List<Student>();


    //افزودن سطر جدید
    private void btnInsertRow_Click(object sender, EventArgs e)
    {
    persons.Add(new Person{ code=1,padash=20000}) ;
    }
    //حذف سطر
    private void btnDeleteRow_Click(object sender, EventArgs e)
    {
    var prs=persons.Find(1);
    persons.Remove(prs);

    }
    //ذخیره لیست
    private void btnSave_Click(object sender, EventArgs e)
    {
    using (var context = new SchoolDBEntities())
    {
    context.Persons.AddRange(persons);
    context.SaveChanges();
    }
    }

    First,solve the problem then write the code

  7. #7

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    دوستان مشکل من اضافه کردم و حذف نیست
    اینها را بلد هستم
    مثل اینکه کامل و درست پست من را مطالعه نمیکنید

  8. #8
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    860

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    دوستان مشکل من اضافه کردم و حذف نیست
    اینها را بلد هستم
    مثل اینکه کامل و درست پست من را مطالعه نمیکنید
    سلام

    چطور میخواهید اطلاعات کارمندان را وارد برنامه کنید ؟

  9. #9

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    چون مقدار پاداش برای همه یکسان تغییر میکنه فکر کنم باید بعد از ویرایش یک دستور Select بزارید که تمام مقادیر فیلد پاداش رو چک کنه مثلا اگه 200 نبود (چون 200 رو موقع ویرایش وارد کردین و ممکنه در همین لحظه یک کارمند اضافه شده باشه) تغییرش بده به 200

  10. #10
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    میشه روش شما رو پیاده کرده مثالی که در پست قبلی گذاشتم مشکل شما رو حل میکنه.شما کم توجهی کردین.شما بعد نمونه سازی باید پاداش های قبلی(رکوردهای جدول person) رو در لیست لود کنی و در btnInsertRow_Click بصورت زیر اصلاح کنی


    private void btnInsertRow_Click(object sender, EventArgs e)
    {
    //چک کردن که آیا رکورد قبلا درج شده
    var rec=persons.FirstOrDefault(c=>c.Id>0 && c.Code==1);
    if(rec==null) //قبلا در لیست درج نشده
    {persons.Add(new Person{ code=1,padash=20000}) ;return;}
    //ویرایش رکورد جاری
    rec.padash=20000;
    }
    First,solve the problem then write the code

  11. #11

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    میشه روش شما رو پیاده کرده مثالی که در پست قبلی گذاشتم مشکل شما رو حل میکنه.شما کم توجهی کردین.شما بعد نمونه سازی باید پاداش های قبلی(رکوردهای جدول person) رو در لیست لود کنی و در btnInsertRow_Click بصورت زیر اصلاح کنی


    private void btnInsertRow_Click(object sender, EventArgs e)
    {
    //چک کردن که آیا رکورد قبلا درج شده
    var rec=persons.FirstOrDefault(c=>c.Id>0 && c.Code==1);
    if(rec==null) //قبلا در لیست درج نشده
    {persons.Add(new Person{ code=1,padash=20000}) ;return;}
    //ویرایش رکورد جاری
    rec.padash=20000;
    }
    ممنون
    ولی این برای وقتی که یک رکورد باشه اره
    ولی معلوم نیست رکوردهای من چندتا هستند
    از طرفی امکان داره بخوام در همون لحظه یک کارمند را حذف کنم از جدول پاداش بگیرها
    من میخوام با کلیک روی یک دکمه همه به صورت یکجا اتفاق بیافته
    چون کارمندان من در گرید لود میشن و یک چک باکس دارم برای اینکه ایا پاداش بگیره یا نه
    حالا مثلا اگر یک کارمند قبلا پاداش میگرفته الان با برداشتن تیک چک باکس باید از جدول حذف بشه
    یا اگر قبلا نبود و تیکش را زدیم باید اضافه بشه

  12. #12
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    سلام، از متد AddOrUpdate استفاده کردین؟ نتیجه؟
    همون AddOrUpdate با یک حلقه و چند تا شرط توی حلقه مشکل شما حل میشه
    بعدش میشه بگید چرا AddOrUpdate اصولی نیست؟

  13. #13

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    داخل این سایت خوندم استفاده نکنیم

    http://www.dotnettips.info/post/1344...tity-framework

    بعدش میشه بگید چطوری بنویسم

  14. #14

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    دوستان اصلا فکر کنم اون سوالم یکم پیچیده هستش
    اونا بذارید کنار
    فرض کنید داخل جدول اینها هستند
    code padash
    200 1
    200 2
    200 3

    حالا میخوایم مثلا پاداش ایدی 1 بشه 300
    ایدی 2 بشه 500
    ایدی 3 بشه 700

    چه کدی باید بنویسیم که بشه به صورت همزمان چندین رکورد را بروزرسانی کرد

  15. #15

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    یک شئ از context بسازید و تغییرات اعم از درج و حذف و آپدیت را روی اون انجام بدید. یک دکمه برای ثبت تغییرات که در اون متد SaveChanges فراخوانی میشه و یک دکمه کنسل هم میتونید اضافه کنید که با توجه به مثالی که قبلا براتون با بایندینگ سورس زده بودم کار سختی نیست.
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 18 شهریور 1395 در 14:07 عصر

  16. #16

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    یعنی با ی حلقه for بیام و کل سطرها را با استفاده از پراپرتی Local بررسی کنم و اگر سطری باید حذف بشه یا ویرایش یا اضافه روی اون اعمال کنم و فقط یکبار متد savechange را صدا بزنم؟

  17. #17
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    داخل این سایت خوندم استفاده نکنیم

    http://www.dotnettips.info/post/1344...tity-framework

    بعدش میشه بگید چطوری بنویسم
    توی سایت جناب نصیری گفته شده متدAddOrUpdate هنگام Migration استفاده نکنیم نه همه جای برنامه
    در هر صورت این متد خیلی کارگشا هست و میتونید توی یک حلقه با AddOrUpdateرکوردهای جدید را درج و رکوردهای ویرایش شده را به روزرسانی کنیم

    var dc = new ApplicationDbContext();

    var persons = personViewModels.Select(x => new Personnel
    {
    Id = x.Id,
    Padash=x.Padash

    });
    dc.Persons.AddRange(details);
    ///////////////////////////////////////
    foreach (var detail in persons)
    {
    var find = dc.Persons.Find(detail.Id);
    find.Padash = detail.Padash;
    dc.Persons.Attach(find);
    dc.Entry(detail).State = EntityState.Modified;
    }


    اکر personViewModels به یک دیتاگراید Bind شده باشه یا تک تک رکوردها درونش ریخته شده باشه با متدAddrange میتونید یهویی رکودهاتون درج کنید و اگر خواستید فقط ویرایش کنید توی حلقه دیگه مثل حلقه پایین تری به روزرسانی کنید
    البته میتونید مستقیم روی personViewModels یک حلقه بزنید و ویرایش رو انجام بدید و متد find درون حلقه رو فراموش نکنید

  18. #18

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    ممنون ولی نه
    اخه شاید قراره باشه یه رکورد حذف بشه اونوقت این متد کارگشا نیست

  19. #19

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    اگر از بایندینگ سورس استفاده می کنید میتونید از متدهای AddNew و RemoveCurrent و ... برای درج و حذف استفاده کنید.
    مثال:
    مدل
        public class Person
    {
    [Key]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    [NotMapped]
    public string FullName
    {
    get { return FirstName + " " + LastName; }
    }

    [Required]
    public decimal Amount { get; set; }
    }

    class DatabaseContext :DbContext
    {
    public DbSet<Person> Persons { get; set; }
    }

    یک فرم شامل دیتاگرید، دکمه های افزودن، حذف سطرجاری، لغو تغییرات و ذخیره تغییرات، چهار تکست باکس شامل تکست باکس id(که readonly هست) نام و نام خانوادگی و مقدارپاداش.
    کد فرم
        public partial class Main : Form
    {
    private DatabaseContext _context;
    private BindingSource _bindingSource;

    public Main()
    {
    InitializeComponent();

    _context = new DatabaseContext();

    _context.Persons.Load();

    _bindingSource = new BindingSource
    {
    DataSource = _context.Persons.Local.ToBindingList()
    };
    dataGridView1.DataSource = _bindingSource;
    DataGridViewColumn firstnameColumn = dataGridView1.Columns["FirstName"];
    if (firstnameColumn != null) firstnameColumn.Visible = false;
    DataGridViewColumn lastnameColumn = dataGridView1.Columns["LastName"];
    if (lastnameColumn != null) lastnameColumn.Visible = false;

    txtId.DataBindings.Add("Text", _bindingSource, "Id");
    txtFirstName.DataBindings.Add("Text", _bindingSource, "FirstName");
    txtLastName.DataBindings.Add("Text", _bindingSource, "LastName");
    txtBonus.DataBindings.Add("Text", _bindingSource, "Amount");
    }

    private void btnAddNew_Click(object sender, EventArgs e)
    {
    _bindingSource.AddNew();
    }

    private void btnRemove_Click(object sender, EventArgs e)
    {
    _bindingSource.RemoveCurrent();
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
    foreach (var entry in _context.ChangeTracker.Entries<Person>())
    {
    entry.State = entry.State == EntityState.Added ? EntityState.Detached : EntityState.Unchanged;
    }

    _bindingSource.ResetBindings(false);
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
    _context.SaveChanges();
    }
    }

  20. #20
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    اگر از بایندینگ سورس استفاده می کنید میتونید از متدهای AddNew و RemoveCurrent و ... برای درج و حذف استفاده کنید.
    مثال:
    مدل
        public class Person
    {
    [Key]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    [NotMapped]
    public string FullName
    {
    get { return FirstName + " " + LastName; }
    }

    [Required]
    public decimal Amount { get; set; }
    }

    class DatabaseContext :DbContext
    {
    public DbSet<Person> Persons { get; set; }
    }

    یک فرم شامل دیتاگرید، دکمه های افزودن، حذف سطرجاری، لغو تغییرات و ذخیره تغییرات، چهار تکست باکس شامل تکست باکس id(که readonly هست) نام و نام خانوادگی و مقدارپاداش.
    کد فرم
        public partial class Main : Form
    {
    private DatabaseContext _context;
    private BindingSource _bindingSource;

    public Main()
    {
    InitializeComponent();

    _context = new DatabaseContext();

    _context.Persons.Load();

    _bindingSource = new BindingSource
    {
    DataSource = _context.Persons.Local.ToBindingList()
    };
    dataGridView1.DataSource = _bindingSource;
    DataGridViewColumn firstnameColumn = dataGridView1.Columns["FirstName"];
    if (firstnameColumn != null) firstnameColumn.Visible = false;
    DataGridViewColumn lastnameColumn = dataGridView1.Columns["LastName"];
    if (lastnameColumn != null) lastnameColumn.Visible = false;

    txtId.DataBindings.Add("Text", _bindingSource, "Id");
    txtFirstName.DataBindings.Add("Text", _bindingSource, "FirstName");
    txtLastName.DataBindings.Add("Text", _bindingSource, "LastName");
    txtBonus.DataBindings.Add("Text", _bindingSource, "Amount");
    }

    private void btnAddNew_Click(object sender, EventArgs e)
    {
    _bindingSource.AddNew();
    }

    private void btnRemove_Click(object sender, EventArgs e)
    {
    _bindingSource.RemoveCurrent();
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
    foreach (var entry in _context.ChangeTracker.Entries<Person>())
    {
    entry.State = entry.State == EntityState.Added ? EntityState.Detached : EntityState.Unchanged;
    }

    _bindingSource.ResetBindings(false);
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
    _context.SaveChanges();
    }
    }
    عرض ادب و احترام خدمت جناب افراد ، جناب افراد برام سوالی پیش اومده در این زمینه که بنده با Code First کار میکنم ولی روش ثبت اطلاعاتم و اصلا در کل تغییرات روی اطلاعاتم با کدی که الان شما لطف کردید نوشتید فرق میکنه میخواستم بدونم این کد شما همون روش DataBinding هست که شما توی EF بکار بردینش یا اینکه این کد شامل Code First نمیشه ( منظورم اینه که این کد برای Model First یا Database First هست) . پیشاپیش از پاسخگوییتون سپاسگذارم .

  21. #21

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط mrprestige مشاهده تاپیک
    عرض ادب و احترام خدمت جناب افراد ، جناب افراد برام سوالی پیش اومده در این زمینه که بنده با Code First کار میکنم ولی روش ثبت اطلاعاتم و اصلا در کل تغییرات روی اطلاعاتم با کدی که الان شما لطف کردید نوشتید فرق میکنه میخواستم بدونم این کد شما همون روش DataBinding هست که شما توی EF بکار بردینش یا اینکه این کد شامل Code First نمیشه ( منظورم اینه که این کد برای Model First یا Database First هست) . پیشاپیش از پاسخگوییتون سپاسگذارم .
    code first هست دیگه. کلاس مدل رو نگاه کنید. البته فرقی نمیکنه code first , model first , database first باشه.
    به هر صورت حتی با datatable و dataset هم میتونید با BindingSource کار کنید.
    بله به روش DataBinding هست(تکست باکس ها با دیتابایدینگ متصل شدند)


    و یا اینکه کلا روند رو خودتون به دست بگیرید(از بایندینگ سورس استفاده نکنید) که البته کد بیشتری نیاز هست.

  22. #22
    کاربر دائمی آواتار mrprestige
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    کرج
    پست
    646

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    code first هست دیگه. کلاس مدل رو نگاه کنید. البته فرقی نمیکنه code first , model first , database first باشه.
    به هر صورت حتی با datatable و dataset هم میتونید با BindingSource کار کنید.
    بله به روش DataBinding هست(تکست باکس ها با دیتابایدینگ متصل شدند)


    و یا اینکه کلا روند رو خودتون به دست بگیرید(از بایندینگ سورس استفاده نکنید) که البته کد بیشتری نیاز هست.
    برای زمانی که با Seed اطلاعات جدول رو پر میکنیم چطور ؟ بازم میشه از DataBinding استفاده کنیم به عنوان مثال من برای ثیت اطلاعاتم ( زمانی که فقط برای بار اول ثبت بشه ) از seed به این صورت استفاده میکنم

    protected override void Seed(DataB context)
    {
    base.Seed(context);
    Country C = null;
    C=new Country(1,"CANADA");
    C.State =new List<State>();
    C.State.Add(new State(1,"Vankover"));
    C.State.Add(new State(2, "Otava"));
    C.State.Add(new State(3, "Montreal"));
    context.Countries.Add(C);
    context.SaveChanges();
    }


    الان کلا عرض بنده اینه بیاییم از اول همه رو با کدنویسی ( همون فرمایش خودتون که "
    اینکه کلا روند رو خودتون به دست بگیرید(از بایندینگ سورس استفاده نکنید)
    " ) انجام بدم بهتره یا اینکه این روشی که شما بکار بردید چون این کدی که شما هم نوشتید برام جالب بود ولی از طرفی هم خودمم خوشم میاد که از اول تا آخر برنامم رو با کد بنویسم ( چون اینطوری روی کدهام مسلط ترم و هم برنامم انعطاف بهتری داره ) و نمیخوام از کنترلی یا آبجکتی یا ... کمتر استفاده کنم . به نظر شما راه اصولی کدومه ؟

  23. #23

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    BindingSource (و یا BindinList) رو برای این انتخاب کردم که با تغییر در دیتاسورس، تغییرات در دیتاگرید هم به نمایش در بیاد و با انتخاب یک سطر از دیتاگرید اطلاعات اون سطر به تکست باکسها منتقل بشه. در صورتی که از بایندینگ سورس استفاده نکنید باید انتقال اطلاعات بین دیتاسورس و دیتاگرید و کنترلها رو کونویسی کنید. از اونجایی که بایندینگ سورس یک کلاس درونی از فریمورک هست بدون مشکل میتونید استفاده کنید و البته از کنترل شما بر پروژه کم نخواهد کرد.

  24. #24
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    ممنون ولی نه
    اخه شاید قراره باشه یه رکورد حذف بشه اونوقت این متد کارگشا نیست
    دوست عزیز اگر سوالتون بهتر مطرح کنید زودتر ب نتیجه میرید
    شما ننوشتید ک عمل حذف هم میخاید انجام بدید فقط نوشتید update
    بعدش این عملیات یکباره توسط گراید انجام میدید یا کنترلهای دیگه
    Binding هست یا خیر؟
    mvvm و ویومدل هست یا codebehind
    ضمنا ef سیستم قوی و پیشرفته داره فقثط کافیه رکوردها رو علامت گذاری کنید
    با دستوراتی شبیه اینها


    State = EntityState.Modified
    State == EntityState.Added
    State = EntityState.Deleted

    بریزید توی حافظه و Savechange بزنید

  25. #25

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    ممنون
    اگر سوالم نا مفهوم بود معذرت میخوام
    توسط گرید انجام میدم
    یعنی لیست کارمندان داخلش میریزم بعد بر اساس اون لیست میام و میگم مثلا کارمندی که در سطر فلان است پاداشش اضافه بشه(ویرایش) یا حذف بشه اگر قبلا پاداش میگرفته یا تازه به جدول پاداش بگیرها اضافه بشه

    حالا طبق فرمایشات جناب محمود اومدم از باندیگ سورس کمک گرفتم و یک حلقه گذاشتم تا سطرها گرید پیمایش کنه و در داخل حلقه با متد firstordefault میام بررسی میکنم که اگر نیست اضافه بشه و . ...
    و در نهایت متد savechanges

    حالا روش شما چگونه است؟
    بعد میشه بگید mvvm و ویومدل هست یا codebehind چی هستن راستش متوجه نشدم چی هستن و من دارم از کدوم روش استفاده میکنم

  26. #26
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    دوست گرامی بجای توضیح چندباره مشکل شما در این تاپیک بهنره بخشی از پروژه رو که دارای مشکل پیاده سازی هست در قالب یه پروژه اینجا بزاری تا بررسی شود.
    First,solve the problem then write the code

  27. #27
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    دوستان اصلا فکر کنم اون سوالم یکم پیچیده هستش
    اونا بذارید کنار
    فرض کنید داخل جدول اینها هستند
    code padash
    200 1
    200 2
    200 3

    حالا میخوایم مثلا پاداش ایدی 1 بشه 300
    ایدی 2 بشه 500
    ایدی 3 بشه 700

    چه کدی باید بنویسیم که بشه به صورت همزمان چندین رکورد را بروزرسانی کرد

    سلام.
    اولین نکته ای که وجود داره اینه که شما قطعا براساس یک شرط، اقدام به انتخاب گروهی از کارمندان می کنید و تصمیم به تغییر پاداش (Update) یا حذف کارمتدان دارای پاداش (Delete) می کنید.
    اگر برداشت من از جملاتتون درست باشه، می تونید به روش زیر عمل کنید :
    جهت استفاده گروهی برای عملیات های Update و Delete بصورت پیش فرض متدی وجود نداره ولی می تونید برای انجام گروهی این کارها از طریق nuget اقدام به نصب Extension های زیر کنید که با وجود حجم خیلی کم ،خروجی فوق العاده ای رو به همراه داره.
    ابتدا دستور زیر را وارد و اجرا کنید (اتصال به اینترنت فراموش نشه)
    Install-Package EntityFramework.Extended

    بعد از نصب، فضای نام زیر رو به بالای فرم مورد نظر اضافه کنید :
    using EntityFramework.Extensions;

    حالا می تونید از متدهای Update و Delete بصورت گروهی برای کارهای مورد نظرتون استفاده کنید. من نحوه استفاده رو با ذکر یک مثال توضیح میدم :
    فرض کنید یک کلاس Car بصورت زیر داریم (کلاس Context رو هم خودتون اضافه کنید).
    public class Car
    {
    public int Id { get; set; }
    public string CarName { get; set; }
    public string Color { get; set; }
    public int ProduceYear { get; set; }
    }

    حالا جهت استفاده داریم :
    private void btnOperation_Click(object sender, EventArgs e)
    {
    DatabaseContext db = new DatabaseContext();
    //
    db.Cars.Where(x => x.Id >= 5).Update(x => new Car { Color = "Red" });
    MessageBox.Show("تا اینجا، رکوردهای مورد نظر داخل دیتابیس آپدیت شدن");

    db.Cars.Where(c => c.Id >= 80 && c.Id <= 107).Delete();
    MessageBox.Show("در این مرحله، اطلاعات مورد نظر از دیتابیس حذف شدن");
    }

    نیازی به استفاده از متد SaveChanges برای ذخیره اطلاعات نداریم. تمامی این کارها بصورت اتومات انجام میشن.
    از نظر سرعت هم، برای بیش از 1000 رکورد که من تست کردم کمتر از 1 ثانیه (هر 2 عملیات با هم) زمان گرفت.
    موفق باشید.
    آخرین ویرایش به وسیله veniz2008 : جمعه 19 شهریور 1395 در 16:23 عصر

  28. #28

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    دوست گرامی بجای توضیح چندباره مشکل شما در این تاپیک بهنره بخشی از پروژه رو که دارای مشکل پیاده سازی هست در قالب یه پروژه اینجا بزاری تا بررسی شود.
    مشکل را باکمک جناب محمود حل کردم
    حالا طبق فرمایشات جناب محمود اومدم از باندیگ سورس کمک گرفتم و یک حلقه گذاشتم تا سطرها گرید پیمایش کنه و در داخل حلقه با متد firstordefault میام بررسی میکنم که اگر نیست اضافه بشه و . ...
    و در نهایت متد savechanges
    دوستمون ali_md110 گفتند ی روش دیگه هست گفتم توضیح بدن همین


    ممنون جناب veniz2008
    این روش را میدونستم ولی ی مشکلی که داره ثابت هستش
    یعنی در این روش یک فیلد فقط یک مقدار میگیره و برای سرچ اشخاص یک شرط ثابت
    مثلا کسانی که id اونها بزرگتر از 6 بود فیلد پاداش بشه 300
    ونمیشه مثلا id را از یک جایی مثل لیست خوند و همینطور برای هر شخص یک مقدار ثبت بشه

  29. #29
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    این روش را میدونستم ولی ی مشکلی که داره ثابت هستش
    یعنی در این روش یک فیلد فقط یک مقدار میگیره و برای سرچ اشخاص یک شرط ثابت
    مثلا کسانی که id اونها بزرگتر از 6 بود فیلد پاداش بشه 300
    ونمیشه مثلا id را از یک جایی مثل لیست خوند و همینطور برای هر شخص یک مقدار ثبت بشه
    ثابت نیست.
    شما می تونی از یه لیست بخونی و اگر وجود داشت بعد عمل مورد نظرت رو انجام بدی .
    در مثال زیر اگر ID داخل دیتابیس با اعداد داخل لیست برابر باشه، عمل آپدیت انجام میشه.
    List<int> lst = new List<int>();
    for (int i = 995; i < 1000; i++)
    {
    lst.Add(i);
    }

    DatabaseContext db = new DatabaseContext();
    //
    db.Cars.Where(x => lst.Contains(x.Id)).Update(x => new Car { Color = "Orange"});

    موفق باشید.

  30. #30

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    حالا اون مقدار color چی؟
    میشه اونم متغییر باشه برای هر id

  31. #31
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: درج و اپدیت چندین رکورد با entity framework

    فکر نمی کنم بشه با همون متد Update برای هر id یک رنگ (یک مقدار) متفاوت ست کرد. ولی می تونید با یه حلقه foreach این کار رو انجام بدید.
    فرض کنید یک کالکشن دو مقداری مثل یک Dictionary<int, string دارید که مقدار اول معادل فیلد Id باشه و مقدار دوم هم مقدار برای اون Id باشه :
    در کد زیر برای id های 0 تا 9 درون جدول Car، مقدار معادل در Dictionry درج میشه.
    Dictionary<int, string> dic = new Dictionary<int, string>();
    for (int i = 0; i < 10; i++)
    {
    dic.Add(i, "Color" + i.ToString());
    }
    //
    DatabaseContext db = new DatabaseContext();
    db.Cars.Where(x => dic.Keys.ToList().Contains(x.Id)).ToList().ForEach (c => c.Color = dic[c.Id] );

تاپیک های مشابه

  1. حرفه ای: ثبت رکورد در دو جدول که با هم ارتباط یک به چند دارند با entity framework
    نوشته شده توسط homa sadeghi در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: دوشنبه 03 آذر 1393, 18:00 عصر
  2. مهاجرت چندین مستاجر با Entity Framework 6.0 در مدل Code First
    نوشته شده توسط ایمان مدائنی در بخش ASP.NET MVC
    پاسخ: 0
    آخرین پست: چهارشنبه 08 مرداد 1393, 11:14 صبح
  3. مبتدی: حذف و درج و آپدیت کردن رکورد های جدول با استفاده از DataGridView
    نوشته شده توسط meysamax در بخش C#‎‎
    پاسخ: 1
    آخرین پست: دوشنبه 12 خرداد 1393, 00:53 صبح
  4. سوال: در مورد نشان دادن آخرین رکورد جدول با Entity Framework
    نوشته شده توسط mamadcity در بخش C#‎‎
    پاسخ: 4
    آخرین پست: یک شنبه 17 شهریور 1392, 01:30 صبح
  5. سوال: درج چندين ركورد با شرطهاي مشخص
    نوشته شده توسط MOR_MS در بخش VB.NET
    پاسخ: 2
    آخرین پست: دوشنبه 23 مرداد 1391, 02:46 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •