我正在尝试构建一个允许查询域类的通用存储库。
我的存储库界面如下所示:
public interface IRepository<T>
{
T Get(int id);
IQueryable<T> Query();
void Add(T model);
void Remove(T model);
}
鉴于我有一个UserEntity
实体框架类和一个User
域类,我想查询User
. UserEntity
不应该暴露给其他服务,因为它应该在实体框架层的内部。
类似的查询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>
{
}