我有一张桌子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?
3 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
我遇到了类似的问题,您可以通过这种方式解决。我几乎倾向于避免只使用外键的表,而是添加另一列来解决这个问题。
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 关注
- 162 浏览
添加回答
举报
0/150
提交
取消