2009-10-12 169 views
1

當試圖填充我的促銷表對象時,我收到以下錯誤「序列包含多個元素」。我知道我收到這個錯誤,因爲我的查詢返回多個值,因爲它應該。任何人都可以指出我正確的方向,除了循環以外如何刪除多個記錄(如果可能的話使用EF)。序列包含多個元素

主要PROC:

TBLPROMOTIONCOLLECTION promotionCollectionInfo = null; 
using (webStoreEntities webStoreContext = new webStoreEntities()) 
{ 
    promotionCollectionInfo = WebStoreDelegates.selectPromotionCollection.Invoke (webStoreContext).ByPromoID(promotionId).ToList().SingleOrDefault(); 

    if (promotionCollectionInfo != null) 
    { 
    webStoreContext.DeleteObject(promotionCollectionInfo); 
    webStoreContext.SaveChanges(); 
    } 
} 

selectPromotionCollection代表:

 public static Func<webStoreEntities, IQueryable<TBLPROMOTIONCOLLECTION>> selectPromotionCollection = 
    CompiledQuery.Compile<webStoreEntities, IQueryable<TBLPROMOTIONCOLLECTION>>(
     (promotion) => from c in promotion.TBLPROMOTIONCOLLECTION 
         select c); 

ByPromoID過濾器:因爲我期待倍數

 public static IQueryable<TBLPROMOTIONCOLLECTION> ByPromoID(this IQueryable<TBLPROMOTIONCOLLECTION> qry, int promotionID) 
    { 
     //Return the filtered IQueryable object 
     return from c in qry 
       where c.PROMOTION_ID == promotionID 
       select c; 
    } 

FirstorDefault不解決我的問題。 任何幫助,將不勝感激。

謝謝,比利

+0

你能請精煉您的問題。基本上你是問你爲什麼得到「序列包含多個元素」的錯誤,或者你問如何在EF中一次刪除多個對象? - PS如果你問如何批量刪除EF中的項目沒有循環我認爲答案是,你不能。 ObjectContext只有一個DeleteObject(對象實體)方法,並且缺少一個DeleteAllObjects或類似的方法。 – 2009-10-12 20:48:58

+0

問如何解決我得到的錯誤,因爲我需要刪除倍數。猜你回答了我的問題。可能只是去SP路線。謝謝。 – 2009-10-12 20:53:24

回答

1

的錯誤是在這裏:

.SingleOrDefault();

(你的主要過程的第三行)當IQueryable返回> 1的元素時,拋出你的ByPromoId。

一個解決將是改變你的代碼:

promotionCollectionInfo = WebStoreDelegates.selectPromotionCollection 
    .Invoke(webStoreContext).ByPromoID(promotionId).ToList(); 

foreach (var pc in promotionCollectionInfo) 
{ 
    webStoreContext.DeleteObject(pc); 
} 
webStoreContext.SaveChanges(); 
+0

那種我想避免的。這個循環可能會相當長,因此,一次刪除100到200條記錄1似乎相當耗時,而所有這些記錄的刪除操作相對較少。只是繼續前進,並將sp映射到我的實體表的cud映射,並形成我的刪除sp以擺脫我想要的倍數。 Thansk雖然你的快速反應。 – 2009-10-13 13:39:55

+0

你說你想解決這個錯誤。我帶你瞭解錯誤。如果你實際上有完全不同的問題,你能直接問一下嗎? – 2009-10-13 14:06:02

相關問題