Я использую FilteredSet, чтобы автоматически получать данные от текущего пользователя, зарегистрированного в системе. Он предоставляет мне динамический способ возврата данных от текущего пользователя и не доступа к другим данным пользователей.Код элемента Entity Framework Первое обновление с предложением Where
Я хотел бы сделать то же самое, когда обновляю объект. Я мог бы получить сущность из базы данных с FilteredSet, и если идентификатор объекта не принадлежит пользователю, выбрал исключение, но я не хочу сначала загружать объект и просто присоединять его и обновлять.
До сих пор, я попробовать:
public void UpdateOwnable<TEntity>(TEntity entity) where TEntity : class, IEntity, IUserOwnable
{
var entityLocal = SetOwnable<TEntity>().Local.SingleOrDefault(d => d.Id == entityId);
if (entityLocal==null)
{
entityLocal = this.SetOwnable<TEntity>().Attach(entity);
}
this.ChangeTracker.Entries<TEntity>().Single(d => d.Entity == entityLocal).State = EntityState.Modified;
}
Проблема заключается в том, что запрос генерируется не включает в себя ИНЕКЕ. Я ожидал бы найти способ, которым предложение Where является не только основным ключом объекта, но и идентификатором пользователя.
Update Workout
SET name ..
WHERE id = 1
AND idUser = 123;
Этот SQL-запрос - это то, что я хотел бы создать Entity Framework для генерации. С предложением «И» для idUser.
Возможно ли это?
Есть ли причина, по которой вы не просто используете метод расширения Wow LINQ? например: entity.Where (x => x.id == 1 && x.idUser == 123) – Justin
Да, это требует, чтобы каждый разработчик добавил это условие. Если кто-то забудет, это может быть опасно. Вот почему, динамический способ сделать это интересен, потому что если вы установите для меня сущность, которую я «помечен», чтобы «владеть» пользователем, что она заставит каждый доступ быть привязанным к текущему зарегистрированному пользователю. Вот несколько объяснений: http://patrickdesjardins.com/blog/using-a-filtereddbset-with-entity-framework-to-have-dynamic-filtering –
Также невозможно добавить предложение Where в обновлении ... –