Gre*_*Gum 5 c# entity-framework entity-framework-core asp.net-core
TenantId我想在 my 中设置,DbContext以便我可以使用它过滤所有查询。
我已经设置了过滤器,但我很难TenantId访问DbContext.
困难的原因是UserManager用于获取当前登录用户的 和 取决于TenantId从DbContext数据库获取数据的 。因此,我无法使用UserManager依赖注入导入,因为它会导致循环依赖。取决于UserManager,DbContext并且DbContext取决于UserManager。
还有其他方法可以配置这个吗?
小智 2
如果我正确理解你的问题,你会遇到这样的情况:
public class UserManager : IUserManager
{
public UserManager(IDBContext db, ... )
{
_context = db;
...
}
private IDBContext _context ;
public UserInfo User {get; set;}
// ... Some logic that fills User
}
public class DBContext : IDBContext
{
public DBContext(...)
{
...
}
// ... Here you need UserInfo to filter.
}
Run Code Online (Sandbox Code Playgroud)
稍微改变一下应用程序的结构,使其像这样:
public class UserProvider : IUserProvider
{
public UserInfo User {get; set;}
}
public class UserManager : IUserManager
{
public UserManager(IDBContext db, IUserProvider provider, ... )
{
_context = db;
_userProvider = provider;
...
}
private IDBContext _context ;
private IUserProvider _userProvider;
// ... Some logic that fills _userProvider.UserInfo
}
public class DBContext
{
public DBContext(IUserProvider provider, ...)
{
_userProvider = provider;
...
}
private IUserProvider _userProvider;
// ... Here you can use _userProvider.UserInfo
}
Run Code Online (Sandbox Code Playgroud)
唯一的要求:在依赖注入框架中将 IUserProvider 注册为单例
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |