2009-11-08 2 views
0

Предположим, у меня есть две таблицы: A и B. Таблица A имеет первичный ключ с именем A_ID типа int, а таблица B имеет внешний ключ A_ID.Соотношения таблиц в LINQ to SQL

Когда я добавляю две таблицы в класс контекста данных LINQ to SQL, он правильно создает классы и связанную между ними связь.

Мой вопрос: класс B будет иметь свойство типа int, называемое A_ID. Он также будет иметь свойство A, типа A.

Теперь, если во время выполнения я делаю вызов LINQ to SQL, который заполняет экземпляр B, B.A_ID и B.A.A_ID, будет тем же значением. Что мешает разработчику совершить какую-то ошибку и поставить другое значение в B.A_ID, чем в B.A.A_ID?

В базе данных вы не могли этого сделать из-за ограничений внешнего ключа, но как классы LINQ to SQL применяют эти ограничения на стороне клиента?

ответ

1

LINQ to SQL, когда он привязан к реляционной базе данных, на самом деле просто создает SQL для вас, и поэтому, если вы делаете что-то незаконное в базе данных (например, нарушаете ограничение внешнего ключа), это база данных, которая действительно останавливает вас, а не LINQ сам. И ограничения в LINQ to SQL сами просто удаляются из базы данных.

Итак, если вы не говорите о прикреплении его к XML-сегменту или тому подобному (и я не вижу, чтобы ваш вопрос подсказывал это), то LINQ действительно ничего не делает. Это действительно очень сложный кодозавод.

Редактировать: Я сказал, что LINQ to SQL является всего лишь кодовым комментатором, но я должен отметить, что метаданные, которые позволяют использовать сильную типизацию и т. Д., Приятно. Я не хочу умалять продукт.

Смежные вопросы