我在EF Code First中使用POCO類。EF代碼首先插入一對一對象會產生異常。「存儲更新,插入或刪除語句會影響意外數量的行(0)。」
我有一類球爲:
public class Ball
{
[Key]
public int BallId { get; set; }
public Box Container { get; set; }
[Required]
public bool IsCounted{get; set;}
}
和一類框爲:
public class Box
{
[Key]
public int BoxId { get; set; }
[Required]
public string Description { get; set; }
public ICollection<Ball> Balls { get; set; }
}
我已經創建球的列表,使用我希望創建一個新的盒子! 在創建框:
- 每一個球都應該有IsCounted財產真正
- 的box.Balls引用應指向現有的對象
的ball.Container應指向新的盒子!
public void CreateBox(string Description, ICollection<Ball> givenBalls) { using (var c = new BoxEntryModel()) { Box entry = new Box(); if (c.Boxes.Count().Equals(0)) entry.BoxId = 1; else entry.BoxId = c.Boxes.Max<Box>(b => b.BoxId) + 1; entry.Description = Description; entry.Balls = givenBalls; try { foreach (Ball ball in givenBalls) { c.Balls.Attach(ball); ball.IsCounted = true; ball.Container = entry; } c.Boxes.Add(entry); c.SaveChanges(); } }
這一段代碼,給了我一個例外:
商店更新,插入或刪除語句影響行的意外數字(0)。自實體加載後,實體可能已被修改或刪除。刷新ObjectStateManager條目。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
異常詳細信息:System.Data.OptimisticConcurrencyException:存儲更新,插入或刪除語句會影響意外數量的行(0)。自實體加載後,實體可能已被修改或刪除。刷新ObjectStateManager條目。
此外,如果我評論行 c.Balls.Attach(費用);該代碼有效,但它爲每個Ball創建新行,我試圖將其添加到該框中。
請幫我按照關係保存實體。 在此先感謝。
嗨@manishKungwani,給出的球已經在數據庫中,或者你是否在你的代碼中創建它們? – 2012-06-13 20:05:12
嗨,你在哪裏定義代碼費用? – elgrego 2012-11-19 19:54:33
費用在相同的DataContext中定義,並且givenBalls已經在數據庫中。 – manishKungwani 2012-11-20 04:22:23