Ассоциации Linq To Sql
-
06-07-2019 - |
Вопрос
Итак, я создал в своем проекте dbml, в котором есть три таблицы:Элементы, ElementImages и изображения.Каждая запись Element может иметь несколько записей ElementImage, и каждая из этих записей ElementImage должна иметь одну запись Image.Первичные и внешние ключи настроены правильно, и ассоциации также определены правильно.Так почему же я не вижу коллекции по каждому из объектов?Я ожидал, что у Element будет коллекция ElementImages, а у ElementImage будет свойство Image, но ничего из этого не отображается в моем Intellisense.Я несколько раз удалял и воссоздавал dbml, даже в других таблицах, но безрезультатно.
Решение
У меня никогда не возникало этой проблемы при перетаскивании из панели обозревателя серверов.
Мы используем bigint в качестве PK/FK, поэтому я не могу сказать, доставляют ли вам проблемы именно Guids.Вы можете попробовать протестировать, используя те же шаги, используя bigint/long, что и ваши ПК, чтобы увидеть, работает ли это для вас.
Я сталкивался с этим только тогда, когда думал, что настрою внешние ключи в таблице БД, но на самом деле забыл.В Server Explorer это трудно сказать с первого взгляда.Если они настроены правильно, вы должны увидеть стрелки между таблицами в области конструктора.Если вы сразу не увидите стрелки, я подозреваю, что ваши FK настроены неправильно.
Используя панель свойств, вы можете изменить видимость свойств ассоциации.Нажатие на сами стрелки позволяет вам изменить родительские/дочерние свойства с помощью панели «Свойства».Обычно я отключаю дочернее свойство, но вы можете ограничить видимость родительского свойства только внутренним.Я предлагаю проверить их, чтобы убедиться, что он не отключен или его видимость установлена ниже, чем вы ожидаете.
Другие советы
Какие типы полей используются для полей вашей базы данных? Некоторые из них не поддерживаются L2S. Появляются ли они в таблицах, когда вы переходите на поверхность dbml?
Отсутствие первичного ключа в родительской или дочерней таблице приведет к этой проблеме. Р>
Если первичный ключ существует в базе данных, но поле не помечено в конструкторе как первичный ключ, просто щелкните его правой кнопкой мыши, выберите свойства и убедитесь, что «Первичный ключ» установлен. установлено в true. По крайней мере одно поле в таблице должно быть помечено, прежде чем разработчик создаст ассоциации. Р>