2014-10-03 79 views
2

我在我的MVC 5項目中使用實體框架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; } 
} 

的THIG,當我創建了一個文件,併爲其分配通過申請財產的請求,該文件的請求ID屬性未更新與請求的RequestID。

我認爲這應該是自動完成的事情,糾正我,如果我錯了。或者在我的代碼中有其他的東西會阻止關係正確地完成?

編輯1

這裏的OnModelCreating功能

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

你能告訴我們你的DbContext OnModelCreating中的映射代碼嗎? – Jack 2014-10-03 20:08:35

+0

@Jack我添加了該功能。 – Shadowxvii 2014-10-03 20:19:09

回答

1

我相信現在實體框架不知道int是外鍵,你需要添加像這樣在OnModelCreating:

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

這應該告訴EF int是該關係的外鍵