这是ASP .net EF核心。
我有2节课。提名与用户具有一对多的关系。
提名将具有指向用户ID的外键。
课程:
public class Nomination
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int NominationId { get; set; }
public int NomineeUserId { get; set; }
public int NominationYear { get; set; }
public User Nominee { get; set; }
}
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailId { get; set; }
public byte[] PasswordHash { get; set; }
public byte[] PasswordSalt { get; set; }
}
public class UserDto
{
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
上下文:
protected override void OnmodelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasKey(x => x.UserId);
modelBuilder.Entity<User>().Property(x => x.UserId).ValueGeneratedOnAdd();
modelBuilder.Entity<Nomination>().HasKey(x => x.NominationId);
modelBuilder.Entity<Nomination>().Property(x => x.NominationId).ValueGeneratedOnAdd();
modelBuilder.Entity<Nomination>().HasOne(x => x.Nominee).WithMany().HasForeignKey(x => x.NomineeUserId).OnDelete(DeleteBehavior.Restrict);
}
控制器GetaLL:
public async Task<actionResult<IEnumerable<Nomination>>> GetNomination()
{
return await _context.Nomination
.Include(n => n.NominationDetails)
.Include(n => n.Nominee)
.ToListAsync();
}
当我执行GetaLL for Namination时,我会收到“ Nominee”(用户)的完整对象,包括密码。 我需要UserDTO而不是User。我不需要用户的其他属性
我应该如何更改代码以实现此目的?