簡體   English   中英

實體框架功能的澄清

[英]Clarification for entityframework function

下面的代碼應該怎么做? 在此代碼中添加包含表的目的是什么,如果它是對PersonId相關的JobType進行級聯刪除,還是只刪除具有指定PersonId的Person?

db.tblPerson.Remove(db.tblPerson.Include("tblJobType").FirstOrDefault(c => c.PersonId== PersonId));

在這種情況下,.Include是多余的或非常糟糕的設計。

多余:

  • .Include用於急切加載相關實體( Documentation ),因為這會立即傳遞給.Remove函數,相關實體永遠不會被使用,因此它毫無意義。
  • 如果這也是試圖刪除相關實體,那將獨立於加載相關實體而發生。 此效果由關系的級聯刪除設置決定

糟糕的設計:

  • 因為.Include將加載相關實體,所以它需要兩個表之間的JOIN。 根據Person和JobType之間的關系(例如可選),這可能導致人員被排除(例如那些沒有JobTypes的人)。

結論

發布的代碼只是刪除具有指定PersonId的Person。 .Include可能只是一個復制粘貼錯誤,在這里沒有任何影響。 如上所述,這不會導致CascadeDelete,這是由不同的設置決定的。 但是,您應該了解.Include的副作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM