ドメイン クラスに対してクエリを実行できる汎用リポジトリを構築しようとしています。
私のリポジトリ インターフェイスは次のようになります。
public interface IRepository<T>
{
T Get(int id);
IQueryable<T> Query();
void Add(T model);
void Remove(T model);
}
エンティティUserEntity
フレームワーク クラスとUser
ドメイン クラスがあるので、User
. はUserEntity
Entity Framework レイヤーの内部にある必要があるため、他のサービスに公開しないでください。
のようなクエリは、ドメイン クラスuserRepository.Query().Single(user => user.UserName == "Toni")
を返す必要があります。User
ただし、内部的にはIDbSet<UserEntity>
、エンティティ フレームワークから返された に対してクエリを実行する必要があります。式ツリー (Single
クエリ操作を含む) は、 に対するクエリに関連付ける必要がありますIDbSet<UserEntity>
。に対してクエリを実行した後、ドメイン クラスIDbSet<UserEntity>
に変換したいと考えています。これは可能ですか?UserEntity
User
に対して内部的にクエリを実行するクラスのIQueryable
実装を作成することを念頭に置いています。User
UserEntity
public class MappedEntityQuery<TModel, TEntity> : IQueryable<TModel>
{
}