加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 无法将第二个自引用FK添加到模型,导致无法确定主要结

发布时间:2020-12-16 03:24:19 所属栏目:asp.Net 来源:网络整理
导读:首先,我知道有很多关于无法确定类型错误之间关联的主要结束的帖子,但我看到的单个问题与我的问题不符,如果我错过了一个抱歉. 我已经构建了一个实体,它最终会引用它自己两次,当我将代码放入第一个自引用时,它可以正常工作,只要广告第二个代码就打破它.做一些
首先,我知道有很多关于无法确定类型错误之间关联的主要结束的帖子,但我看到的单个问题与我的问题不符,如果我错过了一个抱歉.

我已经构建了一个实体,它最终会引用它自己两次,当我将代码放入第一个自引用时,它可以正常工作,只要广告第二个代码就打破它.做一些测试我发现,如果我使用自己的任何一个自我引用自我一切正常,只有当我添加第二个自引用它才会中断.我用于自引用的代码是:

[ForeignKey("ManagerID")]
    public User Manager { get; set; }

    //Auditing Fields
    public DateTime DateCreated { get; set; }
    public int? UpdatedByUserID { get; set; }
    public DateTime? DateUpdated { get; set; }
    public DateTime LastAutoUpdate { get; set; }

    [ForeignKey("UpdatedByUserID")]
    public User UpdatedByUser { get; set; }

完整的实体代码块是:

public class User
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public int ADPFileNumber { get; set; }

    [Required]
    public string ADUserName { get; set; }

    public int AirCardCheckInLateCount { get; set; }

    [Required]
    public string Email { get; set; }

    public DateTime? EndDate { get; set; }

    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    public int ManagerID { get; set; }
    public string MobilePhone { get; set; }

    [Required]
    public string Office { get; set; }

    [Required]
    public string Phone { get; set; }

    public decimal PTO { get; set; }
    public DateTime StartDate { get; set; }
    public int VehicleCheckInLateCount { get; set; }
    public int WexCardDriverID { get; set; }

    [ForeignKey("ManagerID")]
    public User Manager { get; set; }

    //Auditing Fields
    public DateTime DateCreated { get; set; }
    public int? UpdatedByUserID { get; set; }
    public DateTime? DateUpdated { get; set; }
    public DateTime LastAutoUpdate { get; set; }

    [ForeignKey("UpdatedByUserID")]
    public User UpdatedByUser { get; set; }
}

我错过了什么导致第二个自我引用中断?

解决方法

您必须明确指出两个关联的主要结尾.你可以使用你原来的类来做到这一点,没有逆集合属性:

modelBuilder.Entity<User>()
            .HasOptional(u => u.Manager)
            .WithMany()
            .HasForeignKey(u => u.ManagerID);
modelBuilder.Entity<User>()
            .HasOptional(u => u.UpdatedByUser)
            .WithMany()
            .HasForeignKey(u => u.UpdatedByUserID);

请注意,ManagerID应该是一个int?同样.如果需要其他用户预先存在,则无法创建任何用户.这是一个鸡与蛋的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读