0

dbset を使用してレコードを更新しようとすると、問題が発生します。以下は私のコードです:

CROPContext db = new CROPContext();

var EPins = from EPin in db.Pins.Take(5)
            where
                (EPin.UserID == null && EPin.CC == 5000)
            select EPin;

foreach (var item in Epins.ToList())
{
    item.OrderID = OrderID;
    item.UserID = intUserID;
}
db.SaveChanges();

レコードを更新すると、すべてのレコードが更新されます。次に、EPins.Count() の数を確認すると、5 ではなく、すべての数であることがわかります。最初の 5 つのレコードを更新したい場合、どうすればよいですか?

4

3 に答える 3

1
var EPins = (from EPin in db.Pins
            where
                (EPin.UserID == null && EPin.CC == 5000)
            select EPin).Take(5);

foreach (var item in Epins.ToList())
{
    item.OrderID = OrderID;
    item.UserID = intUserID;
}
db.SaveChanges();

上記を試してください

于 2013-08-16T04:21:31.697 に答える
1
db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000).Take(5).ToList()
       .ForEach( item =>  { item.OrderID = OrderID; item.UserID = intUserID; });
db.SaveChanges();
于 2013-08-16T04:28:17.943 に答える
0

EF6 を使用している場合は、EntityFramework.Extended を使用できます。

db.Pins.Where(EPin => EPin.UserID == null && EPin.CC == 5000)
       .Update(p => new Pin { OrderID = OrderID; UserID = intUserID; });

パフォーマンスへの影響があるため使用を避け.ForEach、データをマテリアライズするのではなくストリーミングする

于 2016-09-30T11:49:00.147 に答える