我在我的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);
}
答案 0 :(得分:1)
我相信Entity Framework现在知道int是外键,你需要在OnModelCreating中添加这样的东西:
modelBuilder.Entity<File>()
.HasOptional(f => f.Request)
.WithMany(r => r.Files)
.HasForeignKey(f => f.RequestId);
这应该告诉EF int是该关系的外键