LINQ to SQL:插入主表和外表

时间:2015-09-28 13:08:45

标签: c# linq-to-sql insertonsubmit

我正在尝试同时将数据插入主表和从属表。两个表之间确实存在数据库关系,表Employee有一个Identity列作为主键。

我正在尝试:

        Database.Employee emp = new Database.Employee()
        {
            x = DateTime.Now,
            y = "xxx"
        };
        Database.Skill skill = new Database.Skill()
        {
            Skill = "Reading"
        };
        emp.Skills = skill;  //Error on this line
        dc.Employees.InsertOnSubmit(emp);
        dc.SubmitChanges();

但我得到的错误是:

  

无法将类型'Database.Skill'隐式转换为   'System.Data.Linq.EntitySet'

1 个答案:

答案 0 :(得分:1)

看起来Database.Employee.Skills是一个集合,而不是一个对象。即在模型中它看起来像:

public class Employee
{
     ...
     public EntitySet<Skill> Skills { get; set; } // collection of skills
}

您的代码行

emp.Skills = skill;

正在尝试将集合实例化为单个实例,因此您会收到转换错误。

因此,添加技能的正确方法类似于

emp.Skills.Add(skill);

确切的实施取决于Database.Employee.Skills是什么。