Linq to SQL вставить / выбрать иностранные / первичные записи - PullRequest
0 голосов
/ 13 ноября 2009

У меня есть таблица A и таблица B.
Таблица B содержит два столбца: Имя и Идентификатор. Таблица A содержит несколько столбцов и столбец внешнего ключа, указывающий на B.ID с именем B_ID

На стороне клиента у меня есть все данные, которые я хочу вставить в таблицу A, за исключением B_ID. Хотя у меня есть B.Name.

используя ссылку на sql мне нужно получить идентификатор в таблице B на основе значения имени. Если запись не существует, мне нужно вставить ее и вернуть идентификатор (который является столбцом идентификации).

Теперь, когда у меня есть B.ID, мне нужно вставить запись в таблицу A.

Я построил свой класс контекста данных, импортировав таблицы A и B в конструктор, я просто не уверен, как написать здесь операторы linq to sql.

1 Ответ

2 голосов
/ 13 ноября 2009

При создании класса контекста данных сначала необходимо установить связь между таблицей A и таблицей B.

Следующее должно дать вам представление о том, как вставить или обновить объект из таблицы B с дочерним отношением к таблице A. По сути, вы проверяете, существует ли объект B. Если он существует, верните его идентификатор. Если нет, создайте объект A, добавьте его к объекту B, а затем вставьте объект B. Создав объект B, LINQ to SQL вставит необходимую информацию в таблицы A и B.

DataContext db = new DataContext();

//Build object A
ObjectTableA objA = new objA();
objA.prop1 = ...
objA.prop2 = ...

// Check to see if the object exists in Table B
var query = from b in db.TableB
        where b.Name == name
        select b;

ObjectTableB objb = query.FirstOrDefault();

//if objb does not exist then create and insert a new object B
if (!objb) {
 objB = new ObjectTableB();
 objB.Name = name;

 //add objA
 objB.propA = objA;
 db.TableB.InsertOnSubmit(objB);
 db.SubmitChanges();
}

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