ورود

View Full Version : update در entity framework



mf_007
چهارشنبه 03 اسفند 1390, 17:25 عصر
سلام،
من در حال یادگیری EF هستم .قسمت update رو به این صورت می نویسم بر فرض بخوام یک فیلد از تمام رکورد هام رو ویرایش کنم.
using (var context = new ahanEntities())
{
var query = context.anbars.Select(p => p);
foreach (var n in query)
{
n.vazn = 20;
}
context.SaveChanges();

}

درست جواب می ده اما
وقتی تو profiler می رم کوئری ساخته شده رو ببینم برای هر رکورد یه کوئری update ساخته یعنی به ازای هر رکورد یک کوئری آیا این کار درسته در حالی که با یک خط کد sql می شه آپدیت رو انجام داد.
آیا این قضیه تاثیر منفی نمی زاره تو برنامه ؟
یا اینکه من اشتباه می نویسم و طور دیگه هم می شه نوشت؟

gwbasic
پنج شنبه 04 اسفند 1390, 11:10 صبح
EF‌این قابلیت رو به ما می ده که از دستورات Native SQL از طریق متدهای ExecuteStoreCommand و ExecuteStoreQuery استفاده کنیم.بنابراین می تونید اون یک خط کد update رو به روش سنتی با استفاده از این دو متد بنویسید

mf_007
پنج شنبه 04 اسفند 1390, 14:01 عصر
من کد رو به این صورت نوشتم
try
{
using(var context=new ahanEntities())
{
context.ExecuteStoreQuery<anbar>("update anbar set vazn=@0", new SqlParameter
{ParameterName="0",Value=Convert.ToInt32(txtupdate.Text) });
label1.Text = "update success";
}

}catch(Exception ex)
{
label1.Text = ex.Message;
}
عملیات رو به درستی انجام می ده ولی لیبل مقدار success رو نمی گیره و مقدار زیر رو می گیره
The data reader is incompatible with the specified 'ahanModel.anbar'. A member of the type, 'codekala', does not have a corresponding column in the data reader with the same name.
این یعنی چی؟ یعنی خطایی اتفاق می افته و فسمت catch اجرا می شه در حالی که عملیات update به درستی انجام شده؟

firoozi90
جمعه 05 اسفند 1390, 10:54 صبح
به لینک زیر یه نگاه بنداز
آموزش ویرایش اطلاعات با Entity framework (http://barnamenevis.org/showthread.php?329518-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A8%D8%A7-Entity-framework)