我有一个有两个fk的实体。我一直试图将记录插入数据库但没有成功。这是我用过的方法:
valuePaymentBetToAdd.BetType = db.BetTypes.First(betType => betType.Id == valuePaymentBetToAdd.BetType.Id);
valuePaymentBetToAdd.Lottery = db.Lotteries.First(lotto => lotto.Id == valuePaymentBetToAdd.Lottery.Id);
在这种情况下,第二个对象被分配,但是当调用SaveChanges方法时,我得到一个错误,说明Lottery对象的属性为null。
valuePaymentBetToAdd.BetTypeReference.EntityKey = new EntityKey(db.DefaultContainerName + ".BetType", "Id", valuePaymentBetToAdd.BetType.Id);
valuePaymentBetToAdd.LotteryReference.EntityKey = new EntityKey(db.DefaultContainerName + ".Lottery", "Id", valuePaymentBetToAdd.Lottery.Id);
在这种情况下,我得到另一个奇怪的错误。将对象添加到集合时。
无法添加或附加对象,因为其EntityReference的EntityKey属性值与此对象的EntityKey不匹配。
我在这种情况下遗漏了什么吗?
答案 0 :(得分:0)
如何为BetType和Lottery创建存根对象,只设置Id属性,然后将它们附加到各自的EntitySet,然后在Bet对象上设置这些对象,并保存 - 如下所示:
Lottery lottery = new Lottery() { Id = valuePaymentBetToAdd.Lottery.Id };
BetType betType = new BetType() { Id = valuePaymentBetToAdd.BetType.Id };
MyContext.AttachTo("Lottery", lottery);
MyContext.AttachTo("BetType", betType);
valuePaymentBetToAdd.Lottery = lottery;
valuePaymentBetToAdd.BetType = betType;
MyContext.AddToBet(valuePaymentBetToAdd);
MyContext.SaveChanges();
答案 1 :(得分:0)
尝试像下面这样设置EntityReference:
valuePaymentBetToAdd.BetTypeReference.EntityKey = b.BetTypes.First(betType => betType.Id == valuePaymentBetToAdd.BetType.Id).EntityKey;
它对我有用