Что делает ассоциацию LINQ набором EntitySet <table>? - PullRequest
2 голосов
/ 29 апреля 2010

Я только что закончил использовать Linq to Sql , чтобы отобразить нашу существующую структуру базы данных для использования в приложении толстого клиента .

При написании некоторых методов Linq для замены некоторых хранимых процедур я заметил, что иногда я могу сделать tblOne.tblTwo.MyDesiredField. Я узнал, что в базе данных должен быть association, чтобы это работало. Ну, у меня не хватало некоторых очевидных, поэтому я добавил кучу.

Это было тогда, когда я заметил, что иногда я не мог сделать выше, поскольку некоторые из связанных таблиц считаются EntitySets<tblThree> вместо таблицы, tblThree самой?

Мне, кажется, нет никакого рифмы или причины относительно того, что я получу. Я что-то не так делаю в dbml? Что-то мне нужно изменить в Properties?

Это повод для беспокойства? Я заметил, что для использования EntitySet<tblThree> мне нужно добавить дополнительные from ..

from person in context.tblPersons
from address in person.tblAddress where address.AddressType == "Home"
select new {person.Name, address.Home};

1 Ответ

2 голосов
/ 29 апреля 2010

EntitySet - это набор результатов. Если tableA имеет отношение 1 ко многим с tableB, то tableA.tableB ссылается на набор результатов в tableB, которые ссылаются на результат в tableA.

Стол - это просто стол. Если вы перетаскиваете с помощью дизайнера, вы увидите, что он множественно складывает наборы сущностей, что делает вещи более читабельными.

РЕДАКТИРОВАТЬ: я думаю, из звуков вашей установки, вы, вероятно, увидите сущность Set следующим образом

from b in TableA select b.TableB

в этом случае TableA - это Таблица, а b.TableB - это EntitySet

...