Добавление связанных записей в LINQ - PullRequest
0 голосов
/ 12 марта 2009

Обработка XML-файла с помощью LINQ для добавления записей в таблицу в базе данных SQL Server через контекст данных. Поскольку мы добавляем записи, нам нужно назначить родителей в различных других таблицах. Большую часть времени мы можем найти существующего родителя и использовать его, но иногда нам нужно будет создать нового родителя.

Думал, что мы могли бы сделать это так:

Dim defaultPub As publication
defaultPub = New publication With {.name = e..Value}
Dim pub = _Data.publications.Where(Function(s) s.name = e..Value).DefaultIfEmpty(defaultPub).SingleOrDefault
.publication = pub

Итак, мы пытаемся найти публикацию, которая соответствует e..Value из нашего XML, но если мы не можем найти такую, тогда мы используем 'defaultPub'. Если оно существует, мы не хотим добавлять его снова. Так что, возможно, этот подход в любом случае ошибочен, даже если он работал ...

В любом случае, это в настоящее время не работает, мы получаем эту ошибку: Неподдерживаемая перегрузка, используемая для оператора запроса «DefaultIfEmpty».

Перегрузка требует публикации и получает ее (я проверил TypeNames в quickwatch), не знаю, что здесь происходит.

Что мы действительно ищем, так это что-то вроде find_or_create из activerecord для Ruby, из которого, похоже, скопирована LINQ.

Заранее спасибо,

Дэйв.

1 Ответ

0 голосов
/ 12 марта 2009

ОК, я могу сделать это так:

Dim pub = _Data.publications.Where(Function(s) s.name = e.<source>.Value).SingleOrDefault
Dim newPub As publication
If Not IsNothing(pub) AndAlso pub.name <> "" Then
   .publication = pub
Else
   newPub = New publication With {.name = e.<source>.Value}
   .publication = newPub
End If

Спасибо, Вал!

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