SubmitChanges с LINQ to SQL и пользовательскими функциями - PullRequest
1 голос
/ 07 марта 2012

На сервере SQL я создаю UDF. Давайте назовем это fnCompanyDetails. Он выбирает некоторую информацию о компании из нескольких совместных таблиц. Затем я перетаскиваю эту функцию в новый .dbml моего проекта VB. Я хочу использовать это с LINQ. Что-то вроде этого:

Dim company = (From c In d.fnCompanyDetails(sap)

                    Select New With {

        .Sap = c.txtSAP,

        .CompanyName1 = c.txtCompanyName1, _

        .CompanyName2 = c.txtCompanyName2, _

        })

Результат этого запроса я отображаю пользователю в форме. Если какое-то поле изменилось, я хочу отправить изменения в свою базу данных, но возможно ли это, если я так запрашиваю, из UDF? Спасибо тебе

1 Ответ

1 голос
/ 07 марта 2012

Нет, к сожалению, это невозможно сделать простым способом.Linq-to-sql поддерживает чтение для пользовательских типов, но поддерживает только обновления через типы сущностей, которые в точности соответствуют таблице.

Обычно лучший способ - всегда читать чистые объекты сущности, еслиони читаются с целью их обновления.

Другое решение заключается в создании объектов-сущностей из данных, возвращаемых из udf, и последующем присоединении этих объектов к контексту.Если вы сначала присоединяете сущности в их исходное состояние, а затем вносите изменения после присоединения, вам следует уйти без проблем с отслеживанием изменений.

...