星期四, 9月 05, 2019

[EF] RemoveRange - 導覽屬性

[EF] RemoveRange 這篇無意間發現不用在意 Master-Detail 刪除順序,也試試看單筆資料透過導覽屬性來刪除看看,結果就拋出違反 FK Exception 了
DELETE 陳述式與 REFERENCE 條件約束 "FK_StudentGrade_Student" 衝突。衝突發生在資料庫 "School",資料表 "dbo.StudentGrade", column 'StudentID'。
namespace EFIdentity
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SchoolContext context = new SchoolContext())
            {
                var personalData = context.Person.SingleOrDefault(s => s.PersonID == 25);
                // 要注意刪除順序
                context.StudentGrade.RemoveRange(personalData.StudentGrade);
                context.Person.Remove(personalData);

                // 透過 SaveChange() 進行資料刪除
                context.SaveChanges();
            }
        }
    }
}
結論:就不用管 EF DbContext 會不會自行判斷順序,一律先刪除 Detail 再刪除 Master 就對啦

沒有留言:

張貼留言