2017-04-12 62 views
0

我想從身份表中獲取記錄(例如AspNetUsers,AspNetRoles),我正在使用ASP.Net樣板框架。如何從asp.net中的身份表中獲取記錄零

我一直在使用IRepository接口等生成的標識表庫:

private readonly IRepository<User,long> _userRepository; 
private readonly IRepository<Role> _roleRepository; 

public AccountController(IRepository<User,long> userRepository, 
     IRepository<Role> roleRepository) 
{ 
    _userRepository = userRepository; 
    _roleRepository = roleRepository; 
} 

然後,我用這些倉庫去取使用GetAll()方法記錄:

var roles =_roleRepository.GetAll().Where(u => u.TenantId == tenant.Id); 

我從收到零個記錄AspNetRoles表,但數據庫中有一些記錄。所以,我的第一個問題是我們是否可以創建和使用標識表的存儲庫?

我也使用了像GetUsersInOrganizationunit()這樣的管理器方法,但它也給出了相同的結果(即找不到記錄)。

OrganizationUnit usersInOrganization = new OrganizationUnit(); 
usersInOrganization.TenantId = tenant.Id; 
var users = await_userManager.GetUsersInOrganizationUnit(usersInOrganization); 

那麼,有沒有比上述更好的解決方案?

+0

你必須真正向我們展示存儲庫代碼,否則我們沒有辦法知道實際發生了什麼。 – DavidG

回答

0

請嘗試使用UnitOfWork打包存儲庫。就像這樣:

private readonly IUnitOfWorkManager _unitOfWorkManager; 
    private readonly IRepository<User,long> _userRepository; 
    private readonly IRepository<Role> _roleRepository; 

    public AccountController(IUnitOfWorkManager unitOfWorkManager, 
     IRepository<User,long> userRepository, 
     IRepository<Role> roleRepository) 
    { 
     _unitOfWorkManager = unitOfWorkManager; 
     _userRepository = userRepository; 
     _roleRepository = roleRepository; 
    } 

    public override async Task YourMethod() { 
     using (_unitOfWorkManager.Current.SetTenantId(tenant.Id)) { 
       var roles =_roleRepository.GetAll(); 
       var users =_userRepository.GetAll(); 
      } 
    } 
相關問題