[英]Entity Framework 5 - Deleting Child Records
VS 2012(11.0.60315.01 Update 2),C#5,Entity Framework 5.0.0.0(Runtime v4.0.30319)
我知道過去曾發布類似的問題,但似乎沒有答案。 我想我理解錯誤,但我更感興趣的是找到“理想的”解決方案。 我想要做的就是從Child表中刪除一條記錄。 有人可以幫忙嗎?
這是一個完整而簡單的例子。 SaveChanges()拋出以下異常:
“操作失敗:由於一個或多個外鍵屬性不可為空,因此無法更改關系。當對關系進行更改時,相關的外鍵屬性將設置為空值。 foreign-key不支持空值,必須定義新關系,必須為foreign-key屬性分配另一個非null值,或者必須刪除不相關的對象。“
代碼如下所示:
using System.Linq;
namespace EFDeleteTest
{
class Program
{
static void Main(string[] args)
{
using (EFTestEntities context = new EFTestEntities())
{
var parent = context.Parents.Single(p => p.Id == 1);
var child = parent.Children.Single(c => c.Id == 1);
parent.Children.Remove(child);
context.SaveChanges(); // Throws the above Exception
}
}
}
}
數據庫看起來像這樣:
Parent
Id (PK, int, not null) IDENTITY
Name (nvarchar(50), null)
Child
Id (PK, int, not null) IDENTITY
ParentId (FK, int, not null) -- Foreign Key to the Parent Table (Id column))
Name (nvarchar(50), null)
Parent表中有一條記錄(Id = 1),Child表中有2條記錄(Id為1和2)。 兩個子記錄都有ParentId = 1。
如果您只想刪除子對象,則不應該在邏輯中關注父對象。 試試下面的代碼,讓我知道會發生什么(未經測試)。
using System.Linq;
namespace EFDeleteTest
{
class Program
{
static void Main(string[] args)
{
using (EFTestEntities context = new EFTestEntities())
{
var child = context.Children.Single(c => c.Id == 1);
context.Children.Remove(child);
context.SaveChanges();
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.