-3
私は直接それがほぼ瞬時に完了したエンティティのコンテキストを使用して、これを実行した場合、私は、次のLINQクエリエンティティLINQのパフォーマンス
(from L in linksRepo.PSM_Links()
join U in usersRepo.PSM_Users() on L.UserId equals U.Id
where L.StationId == stationId && L.JobTypeId == 3
select new VW_PollClerks
{
Id = U.Id,
Forename = U.Forename,
Surname = U.Surname,
StaffEmail = U.StaffEmail,
TelephoneHome = U.TelephoneHome,
TelephoneWork = U.TelephoneWork,
TelephoneMobile = U.TelephoneMobile
}).ToList();
を持っています。しかし、上記のように各テーブルのリポジトリを使用すると、完了には30秒以上かかります。私はそれを壊して、それはスピードの問題を引き起こすPSM_Usersテーブルであるように見えますが、これはなぜですか?リポジトリは次のようになります
以下は私と同じに見えますが、ほとんど瞬時に完了します。
using (Models.PSMContext db = new PSMContext())
{
List<PSM_Users> user = (from L in db.PSM_Links()
join U in db.GetUser() on L.UserId equals U.Id
where L.StationId == stationId && L.JobTypeId == 3
select new VW_PollClerks
{
Id = U.Id,
Forename = U.Forename,
Surname = U.Surname,
StaffEmail = U.StaffEmail,
TelephoneHome = U.TelephoneHome,
TelephoneWork = U.TelephoneWork,
TelephoneMobile = U.TelephoneMobile
}).ToList();
}
LINQ to Entitiesではなく、リポジトリの設計、特にメモリ内のテーブル全体のロードとLINQ to Objectsクエリの実行を引き起こすIEnumerableを返します。 –
'db.GetUser()'には引数が必要です。 –