2015-09-28 101 views
1

我试图同时将数据插入到主表和从属表中。这两个表之间确实存在数据库关系,Employee表具有Identity列作为主键。LINQ to SQL:插入主表和外表

我想:

 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

看起来像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是。

+0

上下文是使用SQLmetal生成的,但您提出的解决方案有效。谢谢。 –