LINQ to SQL: вставка в основную и внешнюю таблицу
Я пытаюсь вставить данные в основную таблицу и зависимую таблицу одновременно. Между двумя таблицами существует связь с базой данных, а в таблице 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 ответ
Решение
Это выглядит как 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
является.