это должно быть довольно просто.
У меня работает LINQ to SQL (C # 3.5 / SQL Server), с простыми отношениями между двумя таблицами Конференции и ConferenceAttendees .
Я уже создал и совершил конференцию , затем добавляю 3 ConferenceAttendees , используя следующий код (повторяется 3 раза):
ConferenceAttendee NewAttendee = new ConferenceAttendee();
NewAttendee.ConferenceId = ConferenceID;
NewAttendee.Name = ContactName;
NewAttendee.Email = ContactEmail;
db.ConferenceAttendees.InsertOnSubmit(NewAttendee);
db.SubmitChanges();
Отлично работает, и я вижу, что в базе данных появилось 3 новых участника.
UPDATE:
Затем, используя совершенно новый текстовый текст, я пробую следующее:
string Names = String.Empty;
Conference RequestedConference = db.Conferences.FirstOrDefault(x => x.ConferenceId == ConferenceID);
foreach (ConferenceAttendee Attendee in RequestedConference.ConferenceAttendees)
Names += Attendee.Name + ", ";
Но к нему не прикреплены связанные участники! (Они определенно существуют в базе данных и были зафиксированы). Но RequestedConference.ConferenceAttendees всегда имеет счетчик 0, поэтому цикл никогда не вводится.
foreach (ConferenceAttendee Attendee in this.ConferenceAttendees)
{ Names += Attendee.Name; }
Я делаю это в рамках Частичной конференции классов с помощью метода, который я создал, называемого PrintAllAttendeeNames ().
Что я делаю не так и почему этот свежий текстовый текст не может легко увидеть эти связанные объекты через LINQ, когда они уже находятся в базе данных, зафиксированной уже?
(Примечание: я уже пробовал звонить
db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues);
безрезультатно ..)
Большое спасибо
КОНФЕССИЯ ОБНОВЛЕНИЕ
Я абсолютный идиот. У меня был dataContext, настроенный как статический. Обычно я никогда так не делаю, поэтому у меня никогда не бывает проблем с отложенной загрузкой.
У меня было это:
public static MyDataContext db = new MyDataContext(ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString);
Конечно, изменение этого решило проблему !!!
public MyDataContext db = new MyDataContext(ConfigurationManager.ConnectionStrings["MyDBConnection"].ConnectionString);