我正在使用Entity Framework Z Plus Batch Update方法。由於以下問題我無法繼續。實際上,當我給出像tagName="amir1"這樣的靜態值時,Update方法很有效。但是,我需要獲得Tagdescription從Web服務或基於該另一個集合tagId ,更新方法不接受一個擴展方法或任何其他方法來完成我的requirement.Its說

“LINQ to Entities無法識別方法'System.String GetTagDescription(Int32)'方法,而且此方法無法轉換為商店表達式。”

希望我的要求現在很清楚。如果我的要求有任何其他方法,請指導我。

這是我的代碼:

using (var context = new TrialsDBEntities())
{
     context.tblTags.Where(x => (tagIdCollection.Contains(x.tagId))).
                Update(m => new tblTag { tagDescription = m.tagId.GetTagDescription(), tagName = "amir1" });
}

public static string GetTagDescription(this int i)
{
     return "test" + i;

     ///Replace above line with call to database or web service call 
     getting some text by giving i as input
}

一般承認的答案

編寫代碼如下:

using (var context = new TrialsDBEntities())
{
   var tagsToBeUpdated =  context.tblTags.Where(x => (tagIdCollection.Contains(x.tagId))).AsNoTracking().ToList();

   //Only use this code block if your tagsToBeUpdated list is too large
   Parallel.ForEach(tagsToBeUpdated, tagToBeUpdated =>
   {
      var tagDescription = GetTagDescription(tagToBeUpdated.tagId);
      tagToBeUpdated.tagDescription = tagDescription;
      context.Entry(tagToBeUpdated).State = EntityState.Modified;
   });

   //Only use this code block if your tagsToBeUpdated list is not too large
   foreach(var tagToBeUpdated in tagsToBeUpdated)
   {
      var tagDescription = GetTagDescription(tagToBeUpdated.tagId);
      tagToBeUpdated.tagDescription = tagDescription;
      context.Entry(tagToBeUpdated).State = EntityState.Modified;
   }

   context.SaveChanges();         
}

public static string GetTagDescription(int i)
{
     return "test" + i;

     ///Replace above line with call to database or web service call 
     //getting some text by giving i as input
}

專家解答

免責聲明 :我是項目Entity Framework Plus的所有者

遺憾的是,不可能將BatchUpdate的值從一行更改為另一行。

免責聲明 :我是項目實體框架擴展的所有者

在這種情況下,我們通常建議使用我們為這種情況構建的付費庫,並提供高性能的保存操作。

// Easiest way
context.BulkSaveChanges();

// Fastest way
context.BulkUpdate(tags);



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因