Что представляет собой явное создание сущностей в LINQ to SQL? Какие изящные «решения» существуют для этого ограничения? - PullRequest
2 голосов
/ 15 марта 2010

У меня были проблемы с довольно известной «Явная конструкция типа сущности '##' в запросе не разрешена». ошибка.

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

Поэтому я спрашиваю: что представляет собой явное создание этих объектов? Другими словами:
Почему я могу сделать это:

Product foo = new Product();
foo.productName = "Something";

Но не могу этого сделать:

var bar = (from item in myDataContext.Products
           select new Product {
                 productName = item.productName
           }).ToList();

Я думаю, что при выполнении запроса LINQ между выбранными объектами и извлеченными строками таблицы создается какая-то связь (и поэтому обновление Product в первом фрагменте кода не представляет никакой проблемы, поскольку никаких ассоциаций нет). были сделаны). Я, однако, хотел бы понять это немного глубже (и это мой первый вопрос к вам, а именно: в чем отличие от одного фрагмента кода к другому) .

Теперь я слышал о нескольких способах решения этой проблемы:
1) Создание класса, который наследует класс linq (или класс с такими же свойствами)
2) Выбор анонимных объектов

И это подводит меня ко второму вопросу:
Если вы выбрали один из двух вышеуказанных подходов, какой вы выбрали и почему? Какие еще проблемы возникли у вашего подхода? Есть ли другие подходы?

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