C# 多级联路径错误实体框架代码优先

C# 多级联路径错误实体框架代码优先,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我知道这一点已多次提出,但 提供的答案似乎都没有帮助。我知道 基本问题和使用fluentapi试图修改它的 但这似乎被忽视了(或者我做错了)。 下面是一个例子 问题代码 public class Request { [Key] public int RequestID { get; set; } public string RequestDescription { get; set; } public int RequestPriority { get; set;

我知道这一点已多次提出,但 提供的答案似乎都没有帮助。我知道 基本问题和使用fluentapi试图修改它的 但这似乎被忽视了(或者我做错了)。 下面是一个例子 问题代码

public class Request
{
    [Key]
    public int RequestID { get; set; }
    public string RequestDescription { get; set; }
    public int RequestPriority { get; set; }
    public string RequestStub { get; set; }
    [ForeignKey("Requester")]
    public int RequesterID { get; set; }
    [ForeignKey("Admin")]
    public int AdminID { get; set; }
    public bool RequestAnsweredFlag { get; set; }
    public bool RequestSeenFlag { get; set; }


    public virtual User Requester {get;set;}
    public virtual User Admin { get; set; }
}

上下文类

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {


        modelBuilder.Entity<Request>()
                .HasRequired(a => a.Requester)
                .WithMany()
                .HasForeignKey(u => u.RequesterID);

        modelBuilder.Entity<Request>().HasRequired(a => a.Admin)
                       .WithMany()
                       .HasForeignKey(u => u.AdminID).WillCascadeOnDelete(false);

    }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasRequired(a=>a.Requester)
.有很多
.HasForeignKey(u=>u.RequesterID);
modelBuilder.Entity().HasRequired(a=>a.Admin)
.有很多
.HasForeignKey(u=>u.AdminID).WillCascadeOnDelete(false);
}

任何帮助都将不胜感激。

如果我理解正确,您需要删除属性[ForeignKey(“请求者”)]、[ForeignKey(“管理员”)和删除fluent api规则。并按如下方式修改代码

public class Request
{
    [Key]
    public int RequestID { get; set; }
    public string RequestDescription { get; set; }
    public int RequestPriority { get; set; }
    public string RequestStub { get; set; }
    public int RequesterID { get {return Requester.Id} }
    public int AdminID { get {return Admin.Id} }
    public bool RequestAnsweredFlag { get; set; }
    public bool RequestSeenFlag { get; set; }

    public virtual User Requester {get;set;}
    public virtual User Admin { get; set; }

}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}

默认情况下,它应该正确映射所有内容

他应该将此标记为答案,它对我非常有效:)