.net 外键不自动更新

.net 外键不自动更新,.net,asp.net-mvc-5,entity-framework-6,.net,Asp.net Mvc 5,Entity Framework 6,我正在MVC5项目中使用EntityFramework6 这是我拥有的一个类的示例: public class Request { public int RequestID { get; set; } public virtual List<File> Files { get; set; } } public class File { public int FileID { get; set; } public int RequestID { ge

我正在MVC5项目中使用EntityFramework6

这是我拥有的一个类的示例:

public class Request
{
    public int RequestID { get; set; }

    public virtual List<File> Files { get; set; }
}

public class File
{
    public int FileID { get; set; }
    public int RequestID { get; set; }

    public virtual Request Request { get; set; }
}
公共类请求
{
public int RequestID{get;set;}
公共虚拟列表文件{get;set;}
}
公共类文件
{
public int FileID{get;set;}
public int RequestID{get;set;}
公共虚拟请求{get;set;}
}
问题是,当我创建一个文件并通过Request属性为其分配一个请求时,文件的RequestID属性不会用请求的RequestID更新

我认为这应该是自动完成的,如果我错了,请纠正我。或者我的代码中是否有其他东西会阻止正确处理关系

编辑1

下面是OnModelCreating函数

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    base.OnModelCreating(modelBuilder);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
modelBuilder.Conventions.Remove();
基于模型创建(modelBuilder);
}

我相信实体框架现在知道int是外键,您需要在OnModelCreating中添加类似的内容:

modelBuilder.Entity<File>()
            .HasOptional(f => f.Request)
            .WithMany(r => r.Files)
            .HasForeignKey(f => f.RequestId);
modelBuilder.Entity()
.has可选(f=>f.Request)
.WithMany(r=>r.Files)
.HasForeignKey(f=>f.RequestId);

这应该告诉EF,int是该关系的外键

您能在ModelCreating上的DbContext中显示您的映射代码吗?@Jack I添加了该函数。