【问题标题】:Foreign key not updating automatically外键不自动更新
【发布时间】:2014-11-28 22:13:19
【问题描述】:

我在我的 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; }
}

问题是当我创建一个文件并通过请求属性为其分配一个请求时,文件的 RequestID 属性不会使用请求的 RequestID 更新。

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

编辑 1

这是 OnModelCreating 函数

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

【问题讨论】:

  • 您能否向我们展示您在 DbContext OnModelCreating 中的映射代码?
  • @Jack 我添加了这个功能。

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


【解决方案1】:

我相信 Entity Framework 现在确实知道 int 是外键,您需要在 OnModelCreating 中添加类似这样的内容:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2018-08-05
    • 2019-06-22
    相关资源
    最近更新 更多