我在ASP.Net MVC3网站工作,以2008年实体框架和SQL服务器作为数据储存,还使用存储模式将所有数据存取代码集中在一个区域。
In my application I have many users, every user can have many Projects. User should only have access to their own projects. At the moment I have this code:
public IQueryable<Project> All
{
get {
return context.Projects
.Where(p => p.Owner.ID == Util.GetCurrentUserID())
.Select(p=>p);
}
}
public Project Find(System.Guid id)
{
return context.Projects
.Where(p => p.Owner.ID == Util.GetCurrentUserID())
.FirstOrDefault();
}
如果您注意到了 . where (p \\ gt; p. howerr.ID = Util. GetCrentUnderrID ()))
已被复制。 我还有很多其他地方存在这些确切条件。
DbContext 中是否有办法将这一条件自动附在任何在查询中的项目表之后?
类似 :
public class MyContext : DbContext
{
public DbSet<Project> Projects
.Where(p => p.Owner.ID == Util.GetCurrentUserID()) { get; set; }
}
或
public class MyContext : DbContext
{
public DbSet<Project> Projects { get {
// Insert a cast from IQuerieable to DBSet below
return Projects
.Where(p => p.Owner.ID == Util.GetCurrentUserID())
.Select(p => p);
}
set; }
}
写此题时, < 强势 > UPD < / 强势 >, 意识到上一个版本只会有效 -- -- 需要尝试。 仍然希望听到其他选项, 来实现代码优化, 并让它变得更为DRY 。
提前谢谢!