我正在尝试将两个现有和一个新的出价加入到现有的竞价中,但如果没有先从数据库中提取产品,我就无法这样做。
此代码有效,但我如何仅为现有出价提供出价ID,然后保存拍卖
using (var db = new DataContext())
//find existing auction
var auction = db.Auctions.Find(1);
var bid1 = db.Bids.Find(1);
var bid2 = db.Bids.Find(2);
var bid3 = new Bid()
{
//New Bid
};
//existing
auction.Bids.Add(bid1);
//existing
auction.Bids.Add(bid2);
//new
auction.Bids.Add(bid3);
db.SaveChanges();
}
编辑 - 我也试过这个,但是引起了参照完整性问题:具有以下不足之处:
{“存储更新,插入或删除语句影响了意外的行数(0)。实体可能在加载实体后被修改或删除。刷新ObjectStateManager条目。”}
using (var db = new DataContextContext())
{
var auction = db.Auctions.Find(1);
var bid1 = new Bid() { BidId = 1 };
db.Bids.Attach(bid1);
auction.Bids.Add(bid1);
db.SaveChanges();
}
答案 0 :(得分:0)
您可以使用Attach将已知实体添加到数据库上下文中。
using (var db = new DataContext()) {
//find existing auction
var auction = db.Auctions.Find(1);
var bid1 = new Bid() { BidId = 1 };
var bid2 = new Bid() { BidId = 2 };
var bid3 = new Bid()
{
//New Bid
};
//existing
db.Attach(bid1);
auction.Bids.Add(bid1);
//existing
db.Attach(bid2);
auction.Bids.Add(bid2);
//new
auction.Bids.Add(bid3);
db.SaveChanges();
}