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