2012-03-23 55 views
0

我有兩個型號MVC3如何通過從一個模型分配FK場到另一個

第一款車型

public class Company 
{   
    public int Id { get; set; } 
    public string CompanyName {get;set;} 
    public virtual ICollection<Member> Member { get; set; } 
} 

第二個模型

public class Member 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual Company Company { get; set; } 
} 

所以一個公司可以有許多成員

首先,創建一個公司記錄,然後我重定向到成員控制器,當我試圖保存會員記錄失敗。

這是我在做什麼:Id是通過ActionLink傳遞的公司ID。我檢查的ID有一個值。當我想分配ID以會員COMPANY_ID(FK)

[HttpPost] 
    public ActionResult Create(Member m, int id) 
    { 
     if (ModelState.IsValid) 
     { 
      **m.Company.Id = id;** 
      db.Member.Add(m); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
    } 

在創建成員表,它創建 ID,姓名,COMPANY_ID(FK)

領域我是什麼失敗做錯了?如何將公司ID分配給成員公司_Id(FK)?

謝謝

+0

我想通了,如果有人請確認它是否正確,以及它是否是正確的做法?並解釋爲什麼以前的方式無法正常工作(邏輯)...我所做的更改:在創建方法 > Company company = db.Company.Find(id); company.Member.Add(米); db.SaveChanges(); – Ben 2012-03-26 15:27:57

+0

任何人都可以驗證它嗎? – Ben 2012-03-28 21:13:06

回答

0

我認爲公司是空的,這就是爲什麼。這樣做:

public class Member 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int CompanyId Integer { get; set; } 
    public virtual Company Company { get; set; } 
} 

,並在你的行動寫:

//... 
m.CompanyId = id; 
//... 

這應該做的伎倆。如果您想了解更多關於它的信息,請查看導航屬性和外鍵屬性。

+0

仍然不起作用,並且我檢查了公司記錄,它在db表中創建記錄,但無法在成員表中插入company_id(fk)。如果您知道任何示例鏈接以閱讀關於導航屬性和外鍵屬性的信息,您還可以提供嗎?謝謝 – Ben 2012-03-24 16:58:15

+0

當我插入public int CompanyId {get; set;}時,我得到一個編譯錯誤:INSERT語句與FOREIGN KEY約束「Member_Company」衝突。衝突發生在數據庫「Test」中,表「dbo.Companies」,列'Id'。 該聲明已被終止。 – Ben 2012-03-24 17:03:28

+0

但是您確定數據庫中存在ID ='id在代碼中提供的公司嗎? – 2012-03-26 08:10:41

相關問題