Я просто окунулась в проект Linq2sql после многих лет использования моих собственных процедур доступа к базе данных SQL Server.
Прежде чем я потрачу слишком много времени на выяснение того, как заставить linq2sql вести себя так же, как мой пользовательский код, я хочу убедиться, что он еще не «встроен» в поведение, которое я могу просто использовать, установив отношения прямо в дизайнер ...
Очень простой пример:
У меня есть две таблицы: Person и Notes, с отношением 1 ко многим (1 Person, много заметок), связанные с помощью Person.ID-> Note.PersonID.
У меня есть хранимая процедура (весь доступ к данным осуществляется через SP, и я планирую продолжить это), что делает Link2SQL немного более сложной для меня.
sp_PersonGet (@ID int), который возвращает запись о человеке, и sp_PersonNotesGet (@PersonID), который возвращает набор связанных заметок для этого человека.
Пока все хорошо, у меня есть цель:
Dim myPerson As Person = db.PersonGet(pnID).Single
и я могу получить доступ к своим полям: myPerson.Name, myPerson.Phone и т. д.
и еще я могу сделать
Dim myNotes As Notes = db.PersonNotesGet(pnID)
чтобы получить набор заметок, и я могу повторить этот список, например:
For Each N As Note In myNotes ( do something) Next
Все работает нормально ... НО .... Я бы предпочел, чтобы если я позвонил:
myPerson = db.PersonGet(pnID)
что я также получаю коллекцию myPerson.Notes, которую я могу перебирать.
For Each N As Note In myPerson.Notes ( do something) Next
По сути, Linq2SQl потребуется вызывать 2 хранимые процедуры каждый раз, когда создается запись Person ...
Это выполнимо "из коробки", или мне нужно самому написать код?