LINQ to SQL связывание объектов по нескольким полям ID - PullRequest
3 голосов
/ 10 августа 2009

Я работаю над проектом на работе, который в значительной степени является менеджером по вводу в эксплуатацию, и я не могу понять, как правильно связать таблицу Items в linq с sql.

У меня есть таблица сведений о пакете, в которой (помимо прочего)

DepartmentID, CategoryID, ItemID

И таблица «Предметы» (на самом деле это представление базы данных из другой базы данных, доступное только для чтения в этом приложении) также имеет эти 3 поля, но когда я добавляю связь с этими 3 полями, она не добавляет это как объект свойства от класса PackageDetail

я что-то не так делаю с ассоциацией? все одинокие я отлично работаю ...

Ответы [ 5 ]

3 голосов
/ 19 августа 2009

Я не верю, что Linq-to-SQL может правильно моделировать связь с составным ключом:

Полезно ли использовать многоколонные (составные) первичные ключи при использовании Linq to SQL?

Однако вы все равно можете загружать объекты с составными ключами в запросе Linq-to-SQL, используя анонимный объект в качестве (одиночного) ключа:

http://msdn.microsoft.com/en-us/library/bb399391.aspx

1 голос
/ 19 августа 2009

пометили эти поля идентификаторов как первичные ключи? Убедитесь, что вы назначили необходимые столбцы в качестве первичных ключей, и это должно работать нормально Надеюсь, это поможет

0 голосов
/ 22 августа 2009

Вы имели в виду такой запрос?

var result = from table in dbContext.table1 join table2 in dbContext.table2 join new { table.DepartmentID, table.CategoryID, table.ItemID} equals new {table2.DepartmentID, table2.CategoryID, table2.ItemID}
select table;
0 голосов
/ 20 августа 2009

Похоже, что вы могли бы просто использовать ItemId и игнорировать другие 2, так как это самый специфический классификатор - другими словами, Department и Category полностью определяются itemId.

0 голосов
/ 19 августа 2009

Убедитесь, что ключи правильно настроены с использованием первичного ключа и внешнего ключа. Если это по-прежнему не работает, не могли бы вы добавить новый ключевой столбец вместо использования составного ключа?

Последний вариант с LINQ to SQL обычно вручную обновляет DBML с помощью редактора XML. Нормальное отношение одного ключа выглядит следующим образом:

<Association Name="Schedule_Profile" Member="Schedule" ThisKey="ScheduleID" Type="Schedule" IsForeignKey="true" />

Предложите попробовать создать элемент самостоятельно и установить ThisKey в список столбцов csv. Атрибут OtherKey также может представлять интерес.

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