2012-03-23 23 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

相关问题