当应用程序加载时,我将所有广告系列都加载到内存中:
var all = session.Query<Campaign>().ToList();
Campaign 有一项服务。
public CampaignMap()
{
Table("`TR_Campaigns`");
Schema("dbo");
Not.LazyLoad();
Id(x => .Id).GeneratedBy.Increment().Column("CampaignID");
References(x => x.Service).Column("ServiceID").Not.LazyLoad();
// I also tried hasone and it is bringing the same result
}
这是服务地图:
public ServiceMap()
{
Not.LazyLoad();
Table("`TR_Services`");
Id(x => x.Id, "ServiceID").GeneratedBy.Increment();
Map(x => x.Name,"ServiceName");
}
问题是,当我有 100 个活动,并且每个活动有不同的服务时,映射会生成 100 个查询来获取每个活动的服务。例如,如果 ServiceID 2 在多个活动中重复,则查询… WHERE service0_.ServiceID = 2
将只运行一次(这很好)。
这是生成的查询:
SELECT service0_.ServiceID as ServiceID4_0_,
service0_.ServiceName as ServiceN2_4_0_
FROM [TR_Services] service0_
WHERE service0_.ServiceID = 8
这正常吗?当我有 1000 个活动和 1000 项服务甚至更多时,我会怎么做……</p>
谢谢
更新:
我看到你的编辑,我认为它是有效的。
但是 CampaignMap 的关系比较多,例如:
HasMany(x => x.LandingPageWeights).KeyColumn("CampaignID").Not.LazyLoad();
根据您的查询,我该如何处理?
做LandingPageWeights = x.LandingPageWeights
失败....
你对此有何建议?
谢谢