我有一張桌子User { UserId, Name, Age }和License { LicenseId, Name, IsActive }。另外,我有一個(gè)表UserLicense { UserId, LicenseId },可以連接這兩個(gè)表,并記錄所有持有許可證的用戶。一個(gè)用戶可以持有多個(gè)許可證,這些許可證在UserLicense表中顯示為不同的行?,F(xiàn)在我需要從許可證表中刪除一個(gè)特定的許可證。我不想徹底刪除它,所以我標(biāo)記了IsActive = false. 但是,我確實(shí)想從UserLicense表中刪除該許可證 ID 的行。我正在使用實(shí)體框架。如果它是一個(gè)直接表,我會(huì)做這樣的事情:var lic = db.Licenses.Where(l => l.Id== licenseId).FirstorDefault();db.Licenses.Remove(lic);db.SaveChanges();但是由于UserLicense是外鍵表,實(shí)體框架不允許我直接使用public void DeleteLicensedUsers(Guid LicenseId){ db.UserLicenses.Where()}因?yàn)樵撃P筒话?UserLicense 的獨(dú)立表,因?yàn)樗皇且粋€(gè)外鍵表。那么如何使用 Linq 和 EF6刪除UserLicense特定表的所有行l(wèi)icenseId?
3 回答

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
我遇到了類似的問題,您可以通過這種方式解決。我?guī)缀鮾A向于避免只使用外鍵的表,而是添加另一列來解決這個(gè)問題。
var license = db.Licenses.Where(l => l.ID == LicenseId).FirstOrDefault();
var users = license.Users.ToList();
if (users != null)
{
foreach (var user in users)
{
license.Users.Remove(user);
}
}
- 3 回答
- 0 關(guān)注
- 185 瀏覽
添加回答
舉報(bào)
0/150
提交
取消