【发布时间】:2018-06-12 17:04:48
【问题描述】:
我有一张桌子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 是一个外键表,Entity Framework 不允许我直接使用它来访问它
public void DeleteLicensedUsers(Guid LicenseId)
{
db.UserLicenses.Where()
}
因为模型不包含 UserLicense 的独立表,因为它只是一个外键表。
那么如何使用 Linq 和 EF6 删除特定 licenseId 的 UserLicense 表的所有行?
【问题讨论】:
-
将
DbSet<UserLicense> UserLicenses { set;get;}添加到您的 DbContext 类然后使用它? -
@Shyju 不需要那个顺便说一句,如果你持有这种类型,你可以使用 context.Set
()
标签: c# asp.net-mvc linq entity-framework-6