2015-09-28 140 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生成的,但您提出的解決方案有效。謝謝。 –