C#中的自引用列表

时间:2015-12-27 14:57:53

标签: c# sql key self-reference

我在C#中使用BugReports。 BugReports可以有重复项,因此它们具有自引用DuplicateOf字段。 (BugReports列表)

public class BugReportDB
{

    [Key]
    public int Id { get; set; }
    public string Description { get; set; }
    ....
    //public int DuplicateId { get; set; }
    public virtual BugReportDB DuplicatedOf { get; set; }
}

这是外键定义:

   modelBuilder.Entity<BugReportDB>().HasOptional(u => u.DuplicatedOf).WithMany().Map(fkamc => fkamc.MapKey("DuplicatedOf"));

为了检查是否有任何重复,我运行以下方法:

    var br = (from b in db.BugReport
                where b.Id == originalId
                select b);
            if (!br.Any())
                throw new NonexistentObjectException();
                foreach (var brep in br) { 
                if(brep.DuplicatedOf.Id==bugReportId)
                throw new InvalidOperationException();

在我的情况下,我没有为单个Id提供单个BugReport,而是有许多BugReport,每个重复一个。例如:BugReport A有两个重复:B和C.在这种情况下,我将在DB中有一个BugReport A,其中包含重复的B和一个带有重复C的BugReport。

我该如何解决这个问题?

提前致谢

0 个答案:

没有答案