我试图使用代码优先工作流添加迁移,但是EF核心似乎不承认我的"TeamMember“和"Step”类之间的多到多关系。
我的“踏步”课:
public class Step {
public int Id { get; set; }
public int ProjectId { get; set; }
public Project Project { get; set; }
[Required]
[StringLength(30, MinimumLength = 3, ErrorMessage = "The step name must have between 3 and 30 characters!")]
public string Name { get; set; }
[Required]
[StringLength(500, MinimumLength = 10, ErrorMessage = "The step description must have between 10 and 500 characters!")]
public string Description { get; set; }
public ICollection<TeamMember> TeamMembers{ get; set; }
public Step() {
}
}我的TeamMember课:
public class TeamMember {
public int Id { get; set; }
public int UserId{ get; set; }
public User User{ get; set; }
public string Role { get; set; }
public int TeamId { get; set; }
public Team Team{ get; set; }
public ICollection<Step> Steps{ get; set; }
public TeamMember() {
}
} 我的文脉课:
public class ProjectContext : IdentityDbContext<User> {
public ProjectContext(DbContextOptions<ProjectContext> options)
: base(options) {
}
public DbSet<User> User { get; set; }
public DbSet<Project> Projects { get; set; }
public DbSet<Team> Teams { get; set; }
public DbSet<Step> Steps { get; set; }
public DbSet<TeamMember> TeamMembers{ get; set; }
protected override void OnModelCreating(ModelBuilder builder) {
builder.Entity<User>().HasKey(m => m.Id);
builder.Entity<Project>().HasKey(m => m.Id);
builder.Entity<Team>().HasKey(m => m.Id);
builder.Entity<Step>().HasKey(m => m.Id);
builder.Entity<TeamMember>().HasKey(m => m.Id);
base.OnModelCreating(builder);
}
}错误字符串:无法确定导航属性'Step.TeamMembers‘所表示的关系。或者手动配置关系,或者使用“NotMapped”属性忽略此属性,或者在“OnModelCreating”中使用“EntityTypeBuilder.Ignore”。
正如您所看到的,我在每个类中都有一个ICollection,我无法判断错误。
发布于 2020-10-22 22:07:49
默认情况下,EF不支持多到多的关系。
为了实现这种关系,您必须创建一个连接表:
您可以这样轻松地配置它:
步骤:
public class Step {
public ICollection<TeamMemberStep> TeamMemberStep { get; set; }
}小组成员:
public class TeamMember {
public ICollection<TeamMemberStep> TeamMemberStep { get; set; }
}连接表:
public class TeamMemberStep
{
public string TeamMemberId { get; set; }
public virtual TeamMember TeamMember { get; set; }
public int StepId { get; set; }
public virtual Step Step { get; set; }
}DbContext:
modelBuilder.Entity<TeamMemberStep>()
.HasKey(aup => new { aup.TeamMemberId, aup.StepId });
public DbSet<TeamMemberStep> TeamMemberSteps { get; set; }现在,您将查询TeamMemberStep表以从任何一方获取数据。
https://stackoverflow.com/questions/64491086
复制相似问题