Я ... воссоздал мою модель сущности и базы данных пары времени .... уже пытался выяснить весь день ....
У меня есть 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
Так что все хорошо, я могу присоединиться и показать данные правильно.
Я могу создать модель данных, сгенерировав модель данных из базы данных.
Это дает мне модель, которую я ожидаю:
Затем я пытаюсь запустить следующий фрагмент кода, чтобы проверить, правильно ли заполняются данные из структуры сущностей:
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 и данные, это правильно ....