是否可以隐藏定义关系的集合?

时间:2019-01-03 16:11:47

标签: c# entity-framework-core

在定义多对多关系时,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值不能为空.

0 个答案:

没有答案
相关问题