Ale*_*ith 7 asp.net entity-framework multi-tenant
我们正在寻找一种通过Entity Framework中的租户ID自动过滤所有CRUD操作的方法.
我们想到的想法是:
有小费吗?
- 谢谢Alex.
Lad*_*nka 13
使用表值用户定义的函数
表值函数仅在.NET 4.5 Beta中可用(并且在代码中不可用).使用它们仍然无法帮助您,因为您必须在每个LINQ查询中使用该函数,因此它与使用where子句相同.
使用存储过程(但我们真的不想,因为我们使用ORM来避免这样做)
它对一些特殊的复杂查询很有用,但通常不是你想要的.
一些如何修改用于生成SQL的模板以在每个语句上添加where子句.
太复杂,完全不同的抽象层次.
一些如何修改用于在控制器中生成LINQ的模板(我们可能使用MVC).
接近理想的解决方案.您只需要将对实体集的访问权限包装成一些代码,如下所示:
public class MultiTenantAccess<T> where T : IMultitenant
{
private IDbSet<T> set;
...
public IQueryable<T> GetQuery(int tenantID)
{
return set.Where(e => e.TenantID == tenantID);
}
}
Run Code Online (Sandbox Code Playgroud)
有时这是一个名为Generic存储库的核心,但它实际上只是EF集的包装器.您将始终使用GetQuery
查询数据存储而不是DbSet
直接使用.
归档时间: |
|
查看次数: |
3861 次 |
最近记录: |