LinqtoEntitiesとEntityFrameworkを使用してクエリを作成しています。私のアプリは2つのデータベースを使用しています。クライアントの要求により、クロスデータベースはオプションではありません。
たとえば、最初のデータベースに存在し(つまり、1つのEFモデルにあり)、複合キーを持つMyEntity
2番目のデータベース(つまり、別のEFモデルにある)のエンティティを参照しているとします。ここで、一連の(この例では、キー[1、1]、[1、2]、および[1、3]を持つエンティティ)を参照するSecondDBEntity
すべてを取得したいとします。MyEntity
SecondDBEntity
生成したいSQLは次のとおりです。
SELECT *
FROM MyEntity
WHERE (MyEntity.ForeignKeyOne = 1 AND MyEntity.ForeignKeyTwo = 1)
OR (MyEntity.ForeignKeyOne = 1 AND MyEntity.ForeignKeyTwo = 2)
OR (MyEntity.ForeignKeyOne = 1 AND MyEntity.ForeignKeyTwo = 3)
次に、次のコードを試しました。
var setOfEntitiesToSearch = LetsAssumeThisIsAnIEnumerableOfSecondDBEntity;
return (from myEntity in DataContext.MyEntityList
where setOfEntitiesToSearch.Any(entityToSearch => entityToSearch.KeyOne == myEntity.ForeignKeyOne && entityToSearch.KeyTwo == myEntity.ForeignKeyTwo)
select myEntity).ToList();
このコードは正常にコンパイルされますが、実行するとエラーが発生します。
"Unable to create a constant value of type 'SecondDBEntity'. Only primitive types or enumeration types are supported in this context."
私の主な問題は、エンティティが異なるデータベースにあるためです。これは私が構築しようとしているかなり一般的なクエリであるため、私はおそらく何かばかげたことをしています。そのため、このクエリを作成できるEFの機能が不足していると思います。多分いくつかのCompositeKey構造?または、それらのEFモデルを混合する方法はありますか?
前もって感謝します。