使用实体框架核心中的链接对象的多对多具有相同对象

时间:2016-12-07 16:38:20

标签: entity-framework-core

我对EF很新,但我有我认为是相当常见的情况因为我有一个名为课程和对象的对象叫做RelatedCourse,这是一个多对多关系,用链接表建模。最初我试图建立这种双向关系(因此,任何一个课程ID都可以表明这种关系),但这似乎过于复杂,而我学习如此坚定地让它以单向工作。我的代码(为简单起见而取出的其他属性)如下:

课程班级:

[Table("Course")]
public class Course : BaseEntity
{
//PRIMARY PROPERTIES
public int CourseId { get; set; }
public string CourseCode { get; set; }
public string Title { get; set; }

//NAVIGATION PROPERTIES
public ICollection<RelatedCourse> RelatedCourses { get; set; }
}

RelatedCourse类:

[Table("CourseRelated")]
public class RelatedCourse : BaseEntity
{
    #region Public Properties

    public int Id { get; set; }

    public int CourseId { get; set; }

    public int RelatedCourseId { get; set; }

    public virtual Course Course { get; set; }

    public virtual Course CourseRelated { get; set; }

    #endregion Public Properties
}

上下文:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//Course
modelBuilder.Entity<Course>().HasKey(s => s.CourseId);
modelBuilder.Entity<Course>()
.HasMany(c => c.RelatedCourses)
.WithOne(c => c.Course)
.HasForeignKey(c => c.CourseId)
.OnDelete(DeleteBehavior.Restrict);

//Related Courses
modelBuilder.Entity<RelatedCourse>().HasKey(c => c.Id);
modelBuilder.Entity<RelatedCourse>()
.HasOne(c => c.Course)
.WithMany(c => c.RelatedCourses);

存储库:

public Course CourseGetRelationshipsFromCode(string courseCode)
    {
        return _context.Courses
            .Where(t => t.CourseCode == courseCode && t.DateDeleted == null)
            .Include(t => t.RelatedCourses)
            .Single();
    }

当我打电话给&#34; CourseGetRelationshipsFromCode&#34;它确实有效,但在我的RelatedCourses属性&#34;课程&#34;我有一个人口稠密的&#34;课程&#34;这是我从CourseCode获得的课程,我不太需要在我的CourseRelated对象中取消,该对象应该是与我正在看的那个相关的课程,我可以& #39;了解如何做到这一点。

有人可以建议如何解决这个问题以及是否有办法不返回&#34;课程&#34;作为&#34; RelatedCourse&#34;的一部分因为这对我来说似乎毫无意义。

0 个答案:

没有答案