外键不会自动更新

时间:2014-10-03 20:01:54

标签: .net asp.net-mvc-5 entity-framework-6

我在我的MVC 5项目中使用Entity Framework 6。

这是我所拥有的课程的一个例子:

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; }
}

当我创建一个文件并通过Request属性为它分配一个Request时,文件的RequestID属性不会被Request的RequestID更新。

我认为这应该是自动完成的事情,如果我错了就纠正我。或者我的代码中还有其他东西会阻止关系正确完成吗?

编辑1

这是OnModelCreating函数

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    base.OnModelCreating(modelBuilder);
}

1 个答案:

答案 0 :(得分:1)

我相信Entity Framework现在知道int是外键,你需要在OnModelCreating中添加这样的东西:

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

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