为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕哥6287543 2021-08-07 18:04:50
我有一张桌子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);

    }                   

}


查看完整回答
反对 回复 2021-08-07
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信