Почему мой EntityA содержит EntityB, а не EntityB содержит EntityA? - PullRequest
0 голосов
/ 27 января 2012

Я ... воссоздал мою модель сущности и базы данных пары времени .... уже пытался выяснить весь день ....

У меня есть 3 таблицы: Клиент, Кампания и Campaign_Url.

Итак, отношения,

  • Клиент может иметь несколько кампаний (от 1 до *)
  • Mutiple Campaign может иметь один и тот же Campaign_Url (* до 1)

Таким образом, таблица Campaign имеет два ключа foregin

  • Campaign.url_id является ключевым ключом для Campaign_Url.campaign_url_id
  • Campaign.client_id является ключевым ключом для Client.client_id

Как показано в:

ALTER TABLE [dbo].[Campaign]  WITH CHECK ADD  CONSTRAINT [FK_Campaign_Campaign] FOREIGN KEY([url_id])
REFERENCES [dbo].[Campaign_Url] ([campaigin_url_id])
GO

ALTER TABLE [dbo].[Campaign] CHECK CONSTRAINT [FK_Campaign_Campaign]
GO

ALTER TABLE [dbo].[Campaign]  WITH CHECK ADD  CONSTRAINT [FK_Campaign_Client] FOREIGN KEY([client_id])
REFERENCES [dbo].[Client] ([client_id])
GO

ALTER TABLE [dbo].[Campaign] CHECK CONSTRAINT [FK_Campaign_Client]
GO

Так что все хорошо, я могу присоединиться и показать данные правильно. Я могу создать модель данных, сгенерировав модель данных из базы данных.

Это дает мне модель, которую я ожидаю:

enter image description here

Затем я пытаюсь запустить следующий фрагмент кода, чтобы проверить, правильно ли заполняются данные из структуры сущностей:

    using (MyEntities dataContext = new MyEntities())
    {
        int totalClient = dataContext.Client.Count();    
        foreach (Client aClient in dataContext.Client)
        {
            int total = aClient.Campaign.Count();   //<===== here is return 0 campagin
        }
        foreach (Campaign aCampaign in dataContext.Campaign)
        {
            string abc = aCampaign.Client.name;  //<====== here the campaign did return the client name
        }

    }

Странно, Client.Campaign не содержит ни одной кампании. Но когда я уйду из Campaign.Client, я смогу получить его Client ....

Что я сделал не так? Когда я оставляю join присоединиться к нему в sql, он возвращается правильно, и я дважды проверил ключ foregin и данные, это правильно ....

1 Ответ

0 голосов
/ 27 января 2012

Насколько я знаю, заполнение отношений один-ко-многим не работает с структурой сущностей.Вы должны пойти грязным путем и наполнить отношения одно за другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...