使用实体框架从只有外键的表中删除一行

我有一张桌子User { UserId, Name, Age }和License { LicenseId, Name, IsActive }。另外,我有一个表UserLicense { UserId, LicenseId },可以连接这两个表,并记录所有持有许可证的用户。一个用户可以持有多个许可证,这些许可证在UserLicense表中显示为不同的行。


现在我需要从许可证表中删除一个特定的许可证。我不想彻底删除它,所以我标记了IsActive = false. 但是,我确实想从UserLicense表中删除该许可证 ID 的行。


我正在使用实体框架。


如果它是一个直接表,我会做这样的事情:


var lic = db.Licenses.Where(l => l.Id== licenseId).FirstorDefault();

db.Licenses.Remove(lic);

db.SaveChanges();

但是由于UserLicense是外键表,实体框架不允许我直接使用


public void DeleteLicensedUsers(Guid LicenseId)

{

    db.UserLicenses.Where()

}

因为该模型不包含 UserLicense 的独立表,因为它只是一个外键表。


那么如何使用 Linq 和 EF6删除UserLicense特定表的所有行licenseId?


慕哥6287543
浏览 163回答 3
3回答

PIPIONE

我遇到了类似的问题,您可以通过这种方式解决。我几乎倾向于避免只使用外键的表,而是添加另一列来解决这个问题。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);    }                   }
打开App,查看更多内容
随时随地看视频慕课网APP