我是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有更简单的方法吗?此外,在创建新技能时自动设置此项将在控制器中完成,正确吗?
答案 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