ドメインサービスのインクルードにwhere句を配置できないようです。そのため、いくつかのlookupGroupsに必要なデータを取得するためにいくつかのループを実行しています。
var _lookupGroups = _lookupGroupRepository.All();
var _lookupValues = _institutionLookupValueRepository.All().Where(x => x.InstitutionID == _userProfile.InstitutionID);
int i = 0;
foreach (var _group in _lookupGroups)
{
var _values = _lookupValues.Where(x => x.LookupGroupID == _group.LookupGroupID);
foreach (var _value in _values)
{
_group.InstitutionLookupValues.Add(_value);
i++;
}
Console.WriteLine(_group.GroupName + " " + i.ToString());
}
return _lookupGroups;
私が入れたカウンターは、私が見たものを検証するためのものでした。最初に繰り返すグループは、Statesです。私のカウンターは50と表示されますが、ナビゲーションプロパティは100と表示され、各機関に1セットの50が表示されます(2セットあります)。そのため、カウンターが50と表示されていても、すべてのルックアップ値を取得してナビゲーションプロパティに配置します。また、メタデータファイルのすべてのインクルードを削除しました。
明確にするために:lookupGroupsにアタッチされているlookupvaluesがあります。ルックアップ値は機関に割り当てられます。したがって、STATESのルックアップグループの値を取得すると、50個のルックアップ値が返されます。上記のコード。この行を実行すると_group.InstitutionLookupValues.Add(_value); 私のInstitutionLookupValues=100(機関に関係なくすべてのlookupValuesを取得します)。しかし、私のカウンターは50を示しています。どこかですべてのルックアップ値を取得していますが、特定の機関に関連付けられている値がわかりません。