我....重新创建了我的实体模型和数据库时间......已经试图计算出一整天......
我有3个表,Client,Campaign和Campaign_Url。
所以关系是,
因此,Campaign表有两个外键
如图所示:
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开始时,我将能够获得它的客户端....
我做错了什么?当我离开加入它在sql中它正确返回,我仔细检查了外键和数据,它是正确的....
答案 0 :(得分:0)
据我所知,填充一对多关系不适用于实体框架。你必须采取令人讨厌的方式,逐一填充关系。