У меня есть база данных с простой таблицей мухи, на которую ссылается другая таблица. Назовем их соответственно категориями и товарами.Linq - Непредвиденное поведение типа ограничения уникальности
Таблица продуктов содержит несколько столбцов, один из которых является столбцом внешнего ключа (в комплекте с ограничением) для КатегорииID для строки таблицы категорий. Это просто, и у меня их много в этой конкретной базе данных.
Я использую Linq в Visual Studio 2008 для представления этих данных в своем приложении. Обе таблицы выглядят как обычные, и у них нет ничего особенного в своих свойствах, которые бы указывали на поведение, которое я опишу.
В самой базе данных имеется несколько рядов продуктов, которые имеют CategoryID=1
. Есть два или три, которые имеют CategoryID=2
. Однако, когда данные загружаются в мое приложение через Linq, итерация через context.Products
показывает, что первые три имеют CategoryID=1
, CategoryID=2
и CategoryID=3
, а все остальные строки имеют CategoryID=NULL
. Это не то, как оно появляется в базе данных. Других аномалий в этой базе данных нет.
Помощь?
Редактировать: Я написал ответ ниже, но, может быть, ребята из DevExpress могут прослушивать? Я счастлив, что теперь он работает правильно, но я не доволен, что до сих пор не понимаю, что пошло не так.
Как выглядит сгенерированный SQL? –
@JonSkeet 'SELECT [t0] .ProductID, [t0] .Описание, [t0] .CategoryID FROM dbo.Product AS [t0]' - ничего необычного. В коллекции, возвращаемой Debug Visualiser, есть все правильные данные, но когда я повторяю ее (или устанавливаю ее как источник данных сетки), она становится неверной. –
Кажется маловероятным, что это даст неверные данные ... как вы диагностируете, что данные неверны в вашем приложении? Вы пробовали небольшое консольное приложение, которое просто извлекает данные и распечатывает их? (Если это так, можете ли вы разместить это приложение?) –