アプリケーションが読み込まれると、すべてのキャンペーンがメモリにチャージされます。
var all = session.Query<Campaign>().ToList();
キャンペーンには 1 つのサービスがあります。
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
は 1 回だけ実行されます (これは良いことです)。
生成されたクエリは次のとおりです。
SELECT service0_.ServiceID as ServiceID4_0_,
service0_.ServiceName as ServiceN2_4_0_
FROM [TR_Services] service0_
WHERE service0_.ServiceID = 8
それは正常ですか?1,000 個以上のサービスを含む 1,000 個のキャンペーンがある場合、どうすればよいでしょうか…</p>
ありがとう
更新:
あなたの編集を見て、それは仕事だと思います。
ただし、CampaignMap にはさらに多くの関係があります。次に例を示します。
HasMany(x => x.LandingPageWeights).KeyColumn("CampaignID").Not.LazyLoad();
あなたのクエリに従ってどのように処理しますか? 失敗します....これについてあなたの提案は
何
ですか?
ありがとうLandingPageWeights = x.LandingPageWeights