在定义多对多关系时,EF Core要求使用联接类。我正试图隐藏此加入课程。
在我的情况下,一个人(实体1)参与许多体育活动(实体2),因此有一个“人事运动(实体3)”表。
使用Entity Framework Core,我可以执行以下操作:
modelBuilder.Entity<Person>()
.ToTable("Person")
.Property(p => p.Surname)
.HasField("_surname");
该类看起来像这样:
private readonly string _surname;
public string Surname
{
get
{
return _surname;
}
}
EF Core将为以下人员正确创建一个数据库字段:Person.Surname。假设“人物”表与运动有关,即一个人参加了许多运动。因此,有一个联接表:PersonSport。是否可以这样做:
1)将一个只读集合添加到“人”表中:
private readonly List<PersonSport> _personSport;
2)如下(在上下文中)设置联接:
modelBuilder.Entity<PersonSport>()
.HasOne<Person>(ps => ps.Person)
.WithMany("_personSport")
.HasForeignKey(sc => sc.PersonId)
.OnDelete(DeleteBehavior.Cascade);
我正试图隐藏PersonSport列表。该类的用户将改为使用以下内容:
public IReadOnlyCollection<Sport> sports => _personSport.Select(ps=> ps.Sport).ToList().AsReadOnly();
这可能吗?当我运行时:Add-Migration InitialCreate; the error is
值不能为空.