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 является.

Другие вопросы по тегам