私はアプリケーションのために働いている束(〜20)の外部テーブルを持っています。私は大規模なクエリで問題が発生している、私は部分的にトレースしたと思うが、私は実際のソリューションに固執しています。 Hereはmy edmxのスクリーンショットで、2つのテーブルとその関係を示しています。私は(_db.Socs.ToList()
経由)データベースからSocs
を選択するたびにEntityFramework外部テーブルがすべてのデータを取得していません
、私はOccupationalEmploymentStatistics
のリストを持っている各Soc
を期待しています。しかし、私が見ている動作は、の最初のSoc
のいずれかがOccupationalEmploymentStatistics
であることです(少なくとも841のレコードのうち、デバッグして約20個を手動で探して、すべての841レコードはNULL可能なフィールドですが、OccupationalEmploymentStatistics
である必要があります)。
私はこれを経由して、にoes
とだけのSoCを絞り込むしようとすると:var allSocs = _db.Socs.Where(x => x.OccupationalEmploymentStatistics != null).ToList();
、私はここで何が起こっているかについての損失で完全だ
Cannot compare elements of type 'System.Collections.Generic.ICollection`1[[MCCDIP.SPA.Data.OccupationalEmploymentStatistic, MCCDIP.SPA.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. Only primitive types, enumeration types and entity types are supported.
を取得します。あなたはすべてのSoCをしたい場合は、収集OccupationalEmploymentStatisticsでは、次のクエリを使用することができますロードで
var query =
from s in _db.Socs
join oes in _db.OccupationalEmploymentStatistics on oes.Soc equals s.Soc1 into gj
from oes in gj.DefaultIfEmpty()
where oes == null
select s;
query = query.Distinct();
:あなたはどんなOccupationalEmploymentStatisticを持っていないすべてのSoCを選択したい場合
where句は、オブジェクトを!= nullと比較しようとしています。 where句はintやstringのようにしか使えないので、プリミティブ型のエラーは、オブジェクトを比較したいときはAnyの代わりにAnyを使います。Where – bilpor
Right ...それを分かりました。さて、それは世話をしています。私はOccupationalEmploymentStatisticsを列挙している限り、今はそれらを手に入れているようです。私はまだこの問題を抱えています:http://stackoverflow.com/questions/42249043/entityframework-query-returns-the-same-object-for-relationship –
あなたはレイジーローディングを使用するかどうかは言及していません。コードスニペットがないため、DbContext(_db)が破棄されているかどうかわかりません。 – jannagy02