-
درج و اپدیت چندین رکورد با 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 پیشنهاد شده ولی خب چون عمل درج و ویرایش با هم هستند نمیدونم چکار کنم
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
سلام، از متد AddOrUpdate استفاده کردین؟ نتیجه؟
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
در یک مقاله خوندم که نباید از این متد استفاده کنیم
من دنبال ی روش اصولی هستم
-
نقل قول: درج و اپدیت چندین رکورد با 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();
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
اخه معلوم نیست چندتا کارمند قراره درج بشه یا فیلد پاداش اونها ویرایش بشه
این روش به نظر نمیره روش اصولی باشه
-
نقل قول: درج و اپدیت چندین رکورد با 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();
}
}
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
دوستان مشکل من اضافه کردم و حذف نیست
اینها را بلد هستم
مثل اینکه کامل و درست پست من را مطالعه نمیکنید
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
نقل قول:
نوشته شده توسط
negar.rafie
دوستان مشکل من اضافه کردم و حذف نیست
اینها را بلد هستم
مثل اینکه کامل و درست پست من را مطالعه نمیکنید
سلام
چطور میخواهید اطلاعات کارمندان را وارد برنامه کنید ؟
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
چون مقدار پاداش برای همه یکسان تغییر میکنه فکر کنم باید بعد از ویرایش یک دستور Select بزارید که تمام مقادیر فیلد پاداش رو چک کنه مثلا اگه 200 نبود (چون 200 رو موقع ویرایش وارد کردین و ممکنه در همین لحظه یک کارمند اضافه شده باشه) تغییرش بده به 200
-
نقل قول: درج و اپدیت چندین رکورد با 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;
}
-
نقل قول: درج و اپدیت چندین رکورد با 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;
}
ممنون
ولی این برای وقتی که یک رکورد باشه اره
ولی معلوم نیست رکوردهای من چندتا هستند
از طرفی امکان داره بخوام در همون لحظه یک کارمند را حذف کنم از جدول پاداش بگیرها
من میخوام با کلیک روی یک دکمه همه به صورت یکجا اتفاق بیافته
چون کارمندان من در گرید لود میشن و یک چک باکس دارم برای اینکه ایا پاداش بگیره یا نه
حالا مثلا اگر یک کارمند قبلا پاداش میگرفته الان با برداشتن تیک چک باکس باید از جدول حذف بشه
یا اگر قبلا نبود و تیکش را زدیم باید اضافه بشه
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
نقل قول:
نوشته شده توسط
mr.sirwan
سلام، از متد AddOrUpdate استفاده کردین؟ نتیجه؟
همون AddOrUpdate با یک حلقه و چند تا شرط توی حلقه مشکل شما حل میشه
بعدش میشه بگید چرا AddOrUpdate اصولی نیست؟
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
داخل این سایت خوندم استفاده نکنیم
http://www.dotnettips.info/post/1344...tity-framework
بعدش میشه بگید چطوری بنویسم
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
دوستان اصلا فکر کنم اون سوالم یکم پیچیده هستش
اونا بذارید کنار
فرض کنید داخل جدول اینها هستند
code padash
200 1
200 2
200 3
حالا میخوایم مثلا پاداش ایدی 1 بشه 300
ایدی 2 بشه 500
ایدی 3 بشه 700
چه کدی باید بنویسیم که بشه به صورت همزمان چندین رکورد را بروزرسانی کرد
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
یک شئ از context بسازید و تغییرات اعم از درج و حذف و آپدیت را روی اون انجام بدید. یک دکمه برای ثبت تغییرات که در اون متد SaveChanges فراخوانی میشه و یک دکمه کنسل هم میتونید اضافه کنید که با توجه به مثالی که قبلا براتون با بایندینگ سورس زده بودم کار سختی نیست.
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
یعنی با ی حلقه for بیام و کل سطرها را با استفاده از پراپرتی Local بررسی کنم و اگر سطری باید حذف بشه یا ویرایش یا اضافه روی اون اعمال کنم و فقط یکبار متد savechange را صدا بزنم؟
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
نقل قول:
نوشته شده توسط
negar.rafie
توی سایت جناب نصیری گفته شده متد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 درون حلقه رو فراموش نکنید
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
ممنون ولی نه
اخه شاید قراره باشه یه رکورد حذف بشه اونوقت این متد کارگشا نیست
-
نقل قول: درج و اپدیت چندین رکورد با 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();
}
}
-
نقل قول: درج و اپدیت چندین رکورد با 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 هست) . پیشاپیش از پاسخگوییتون سپاسگذارم .
-
نقل قول: درج و اپدیت چندین رکورد با 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 هست(تکست باکس ها با دیتابایدینگ متصل شدند)
و یا اینکه کلا روند رو خودتون به دست بگیرید(از بایندینگ سورس استفاده نکنید) که البته کد بیشتری نیاز هست.
-
نقل قول: درج و اپدیت چندین رکورد با 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();
}
الان کلا عرض بنده اینه بیاییم از اول همه رو با کدنویسی ( همون فرمایش خودتون که " اینکه کلا روند رو خودتون به دست بگیرید(از بایندینگ سورس استفاده نکنید)
" ) انجام بدم بهتره یا اینکه این روشی که شما بکار بردید چون این کدی که شما هم نوشتید برام جالب بود ولی از طرفی هم خودمم خوشم میاد که از اول تا آخر برنامم رو با کد بنویسم ( چون اینطوری روی کدهام مسلط ترم و هم برنامم انعطاف بهتری داره ) و نمیخوام از کنترلی یا آبجکتی یا ... کمتر استفاده کنم . به نظر شما راه اصولی کدومه ؟
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
BindingSource (و یا BindinList) رو برای این انتخاب کردم که با تغییر در دیتاسورس، تغییرات در دیتاگرید هم به نمایش در بیاد و با انتخاب یک سطر از دیتاگرید اطلاعات اون سطر به تکست باکسها منتقل بشه. در صورتی که از بایندینگ سورس استفاده نکنید باید انتقال اطلاعات بین دیتاسورس و دیتاگرید و کنترلها رو کونویسی کنید. از اونجایی که بایندینگ سورس یک کلاس درونی از فریمورک هست بدون مشکل میتونید استفاده کنید و البته از کنترل شما بر پروژه کم نخواهد کرد.
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
نقل قول:
نوشته شده توسط
negar.rafie
ممنون ولی نه
اخه شاید قراره باشه یه رکورد حذف بشه اونوقت این متد کارگشا نیست
دوست عزیز اگر سوالتون بهتر مطرح کنید زودتر ب نتیجه میرید
شما ننوشتید ک عمل حذف هم میخاید انجام بدید فقط نوشتید update
بعدش این عملیات یکباره توسط گراید انجام میدید یا کنترلهای دیگه
Binding هست یا خیر؟
mvvm و ویومدل هست یا codebehind
ضمنا ef سیستم قوی و پیشرفته داره فقثط کافیه رکوردها رو علامت گذاری کنید
با دستوراتی شبیه اینها
State = EntityState.Modified
State == EntityState.Added
State = EntityState.Deleted
بریزید توی حافظه و Savechange بزنید
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
ممنون
اگر سوالم نا مفهوم بود معذرت میخوام
توسط گرید انجام میدم
یعنی لیست کارمندان داخلش میریزم بعد بر اساس اون لیست میام و میگم مثلا کارمندی که در سطر فلان است پاداشش اضافه بشه(ویرایش) یا حذف بشه اگر قبلا پاداش میگرفته یا تازه به جدول پاداش بگیرها اضافه بشه
حالا طبق فرمایشات جناب محمود اومدم از باندیگ سورس کمک گرفتم و یک حلقه گذاشتم تا سطرها گرید پیمایش کنه و در داخل حلقه با متد firstordefault میام بررسی میکنم که اگر نیست اضافه بشه و . ...
و در نهایت متد savechanges
حالا روش شما چگونه است؟
بعد میشه بگید mvvm و ویومدل هست یا codebehind چی هستن راستش متوجه نشدم چی هستن و من دارم از کدوم روش استفاده میکنم
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
دوست گرامی بجای توضیح چندباره مشکل شما در این تاپیک بهنره بخشی از پروژه رو که دارای مشکل پیاده سازی هست در قالب یه پروژه اینجا بزاری تا بررسی شود.
-
نقل قول: درج و اپدیت چندین رکورد با 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 عملیات با هم) زمان گرفت.
موفق باشید.
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
نقل قول:
نوشته شده توسط
ژیار رحیمی
دوست گرامی بجای توضیح چندباره مشکل شما در این تاپیک بهنره بخشی از پروژه رو که دارای مشکل پیاده سازی هست در قالب یه پروژه اینجا بزاری تا بررسی شود.
مشکل را باکمک جناب محمود حل کردم
حالا طبق فرمایشات جناب محمود اومدم از باندیگ سورس کمک گرفتم و یک حلقه گذاشتم تا سطرها گرید پیمایش کنه و در داخل حلقه با متد firstordefault میام بررسی میکنم که اگر نیست اضافه بشه و . ...
و در نهایت متد savechanges
دوستمون ali_md110 گفتند ی روش دیگه هست گفتم توضیح بدن همین
ممنون جناب veniz2008
این روش را میدونستم ولی ی مشکلی که داره ثابت هستش
یعنی در این روش یک فیلد فقط یک مقدار میگیره و برای سرچ اشخاص یک شرط ثابت
مثلا کسانی که id اونها بزرگتر از 6 بود فیلد پاداش بشه 300
ونمیشه مثلا id را از یک جایی مثل لیست خوند و همینطور برای هر شخص یک مقدار ثبت بشه
-
نقل قول: درج و اپدیت چندین رکورد با 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"});
موفق باشید.
-
نقل قول: درج و اپدیت چندین رکورد با entity framework
حالا اون مقدار color چی؟
میشه اونم متغییر باشه برای هر id
-
نقل قول: درج و اپدیت چندین رکورد با 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] );