当试图填充我的促销表对象时,我收到以下错误“序列包含多个元素”。我知道我收到这个错误,因为我的查询返回多个值,因为它应该。任何人都可以指出我正确的方向,除了循环以外如何删除多个记录(如果可能的话使用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不解决我的问题。 任何帮助,将不胜感激。
谢谢,比利
你能请精炼您的问题。基本上你是问你为什么得到“序列包含多个元素”的错误,或者你问如何在EF中一次删除多个对象? - PS如果你问如何批量删除EF中的项目没有循环我认为答案是,你不能。 ObjectContext只有一个DeleteObject(对象实体)方法,并且缺少一个DeleteAllObjects或类似的方法。 – 2009-10-12 20:48:58
问如何解决我得到的错误,因为我需要删除倍数。猜你回答了我的问题。可能只是去SP路线。谢谢。 – 2009-10-12 20:53:24