LINQ to SQL: если я добавлю объект в набор Linq Entity, он не будет добавлен - PullRequest
1 голос
/ 28 февраля 2011

Допустим, у меня есть таблица компании и таблица подразделения. Каждый отдел имеет внешний ключ для компании, поэтому в каждой компании может быть много дочерних подразделений.

Если я возьму объект Company с помощью Linq-to-sql, у меня будет доступ к его свойству Divisions, объекту набора объектов Division. Если я добавлю к нему новый объект Division и вызову SubmitChanges (), он не попадет автоматически в таблицу Division или я вынужден вызвать InsertOnSubmit?

1 Ответ

3 голосов
/ 28 февраля 2011

Существует несколько способов вставить объекты в базу данных с помощью LINQ to SQL. Например:

db.Divisions.InsertOnSubmit(new Division()
{
    Company = db.Company.Single(c => c.Id == 1),
    // other properties
});

db.SubmitChanges();

Или:

var company = db.Company.Single(c => c.Id == 1);

company.Divisions.Add(new Division()
{
    // other properties
});

db.SubmitChanges();

Как видите, вы можете использовать InsertOnSubmit свойства Table<Division> Divisions в контексте данных, но вы также можете использовать метод Add свойства EntitySet<Division> Divisions в сущности Company. Они оба делают то же самое. Приятно, что последний подход заключается в том, что вам не нужно «связывать» компанию с новым подразделением, потому что LINQ to SQL может понять это за вас.

Надеюсь, это ответит на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...