如何使用ASP.NET MVC中该表中的另一列获取外键表中的记录ID?

时间:2017-07-20 13:35:20

标签: c# asp.net-mvc linq entity-framework-6 foreign-keys

我是ASP.NET MVC的新手。使用Entity Framework 6,我正在开发一个将员工技能存储在数据库中的项目。用户可以将新技能输入到技能列表中。我想跟踪谁添加了新技能。我有一张所有员工的表。

这两个表的模型。

 public partial class Skill
 {
   public int ID { get; set; }
   public string Skill { get; set; }
   [ScaffoldColumn(false)]
   public int LastActionUserID { get; set; }

   public virtual Employee Employees { get; set; }
 }

 public partial class Employee
 {
   public int ID { get; set; }
   public string EmployeeLAN { get; set; }
   public int LastActionUserID { get; set; }

   public virtual Employee Employees { get; set; }//References itself for LastActionUserID
   public virtual ICollection<Skill> Skills{ get; set; } //Omitted in initial question
 }

员工与技能之间存在1对多的映射。我可以获取当前用户的EmployeeLAN但是如何在创建新技能时自动将该Employee记录的ID放入Skill表中?我必须将表转换为可枚举对象并使用SingleOrDefault或LINQ吗?或者使用EF6有更简单的方法吗?此外,在创建新技能时自动设置此项将在控制器中完成,正确吗?

1 个答案:

答案 0 :(得分:1)

您已走上正轨,您应该继续使用EF6。

Employee类应具有技能列表。这样你就可以调用myEmployee.Skills并列出所有可用的技能。

public partial class Employee
{
   public int ID { get; set; }
   public string EmployeeLAN { get; set; }
   public int LastActionUserID { get; set; }
   public virtual ICollection<Skill> Skills{ get; set; }
}
  

此外,在创建新技能时自动设置此项将在控制器中完成,正确吗?

您需要添加到技能列表,调用AddOrUpdate()将其标记为已更改,然后使用SaveChanges()将其保留到数据库。

我建议您从MSDN docs和Julie Learman那里学习更多知识 Entity Framework videos on Pluralsight