У меня есть таблица User { UserId, Name, Age }
и License { LicenseId, Name, IsActive }
.Также у меня есть таблица UserLicense { UserId, LicenseId }
, которая соединяет оба из них и имеет запись для всех пользователей, имеющих лицензию.Пользователь может иметь несколько лицензий, и они отображаются в виде разных строк в таблице UserLicense
.
Теперь мне нужно удалить конкретную лицензию из таблицы лицензий.Я не хочу удалять это сразу, поэтому я отмечаю IsActive = false
.Однако я хочу удалить строки из таблицы UserLicense
для этого идентификатора лицензии.
Я использую Entity Framework.
Если это прямая таблица, я бы сделал что-то вроде:
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, так как это всего лишь таблица внешних ключей.
Итак, как мне удалить все строки таблицы UserLicense
для определенного licenseId
, используя Linq и EF6?