我有兩個模型/表,一個是用戶,另一個是角色,關系是一個角色可以有很多用戶。我正在嘗試遍歷用戶模型導航屬性中的資料,但我收到一個錯誤,它回傳 null。
用戶模型
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int User_Id { get; set; }
[Required]
[Display(Name ="User Name")]
public string User_Name { get; set; }
[Required(ErrorMessage = "The Field Is Required")]
[MaxLength(10, ErrorMessage = " Please Enter A Valid Input")]
public string Password { get; set; }
//Nav
[ForeignKey("RoleId")]
[Display(Name ="User Role:")]
public int RoleId { get; set;}
public Role Role { get; set; }
}
榜樣
public class Role
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Role_id { get; set; }
[Required(ErrorMessage ="This field is required")]
[Display(Name ="Role Name :")]
public string RoleType { get; set; }
//nav
public List<User> Users { get; set; }
}
控制器動作方法:
public async Task<IActionResult> Index()
{
var viewModel = await userRepository.GetAllUsersAlongWithRolesAsync();
//var viewModel = await baseRepository.GetAllObjectsAsync();
return View("Index",viewModel);
}

更新:UserRepository繼承自IBaseRepository
public class UserRepository : BaseRepository<User>, IUserRepository
{
private readonly ApplicationDbContext _Context;
public UserRepository(ApplicationDbContext context):base (context)
{
_Context = context;
}
public async Task <IEnumerable<User>> GetAllUsersAlongWithRolesAsync()
{
var getUsers = await _Context.Users.Include(u => u.Role).ToListAsync();
return getUsers;
}
}
在用于注入的用戶控制器中:
// injection
private readonly IBaseRepository<User> baseRepository;
private readonly IBaseRepository<Role> roleRepository;
private readonly IUserRepository userRepository;
public UserController(IBaseRepository<User> _baseRepository, IBaseRepository<Role> _roleRepository, IUserRepository userRepository)
{
baseRepository = _baseRepository;
this.roleRepository = _roleRepository;
this.userRepository = userRepository;
}
uj5u.com熱心網友回復:
由于您的方法GetAllObjectsAsync是如此通用,因此您可能無法添加.Include()所需的方法。
我會GetAllUsers()向您的存盤庫建議一個單獨的方法- 可能是具體的UserRepository,如果您有的話:
public async Task<IEnumerable<User>> GetAllUsersAsync()
{
var getUsers = await _Context.Users.Include(u => u.Role).ToListAsync();
return getUsers;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/407650.html
標籤:
