我正在使用FilteredSet自动获取系统当前登录用户的数据。它为我提供了一种从当前用户返回数据而不访问其他用户数据的动态方式。
我想在更新实体时做同样的事情。我可以使用 FilteredSet 从数据库中获取实体,如果实体 id 不属于用户抛出异常但我不想先加载实体并简单地附加这个实体并更新。
到目前为止,我尝试过:
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 子句。我希望找到一种方法,即 Where 子句不仅是实体的主键,而且是用户 ID。
Update Workout
SET name ..
WHERE id = 1
AND idUser = 123;
这个 SQL 查询是我希望实体框架生成的。idUser 带有“AND”子句。
这可能吗?