gpt4 book ai didi

c# - 配置实体之间的多个关系

转载 作者:行者123 更新时间:2023-11-30 21:09:53 25 4
gpt4 key购买 nike

我有多个关系的 PersonCourse 实体:

public class Course
{
public int CourseID { get; set; }
public virtual Person Leader { get; set; }
public virtual ICollection<Person> Teachers { get; set; }
public virtual Person CreatedBy { get; set; }
public virtual Person UpdatedBy { get; set; }
...
}

public class Person
{
public int PersonID { get; set; }
public virtual ICollection<Course> CoursesCreated { get; set; }
public virtual ICollection<Course> CoursesUpdated { get; set; }
public virtual ICollection<Course> CoursesLead { get; set; }
public virtual ICollection<Course> CoursesTutored { get; set; }
...
}

我有以下映射:

modelBuilder.Entity<Course>().HasMany(x => x.Tutors)
.WithMany(p => p.CoursesTutored)
.Map(x =>
{
x.MapLeftKey("PersonID");
x.MapRightKey("CourseID");
x.ToTable("Course_Tutors");
});

这是因为它设置了 Course_Tutors 表并为类(class)表提供了 Leader_PersonIDCreatedBy_PersonIDUpdatedBy_PersonID

但是,它还在类(class)表中创建了三个额外的 Person 列:Person_PersonID1Person_PersonID2Person_PersonID3

谁能告诉我如何摆脱这些?我假设我的映射需要更多工作。

最佳答案

当您在两个实体之间有多个关系时,Code First 无法通过转换识别关系。您需要明确配置它们。

modelBuilder.Entity<Course>()
.HasRequired(c => c.Leader)
.WithMany(p => p.CoursesLead)
.Map(m => m.MapKey("Leader_PersonID"));

modelBuilder.Entity<Course>()
.HasRequired(c => c.CreatedBy)
.WithMany(p => p.CoursesCreated)
.Map(m => m.MapKey("CreatedBy_PersonID"));

modelBuilder.Entity<Course>()
.HasRequired(c => c.UpdatedBy)
.WithMany(p => p.CoursesUpdated)
.Map(m => m.MapKey("UpdatedBy_PersonID"));

关于c# - 配置实体之间的多个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8800997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com