我正在尝试构建允许查询域类的通用存储库。针对域类的查询应针对实体解析
我的仓库界面看起来如下:
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
域类。这可能吗?
我记得要为我的User
类实施一个IQueryable
实现,该类对内部查询UserEntity
。
public class MappedEntityQuery<TModel, TEntity> : IQueryable<TModel>
{
}
'UserEntity'(POCO)应该是你的域名类。你所要做的可以被定义为在ORM之上构建ORM。 –
问题是实体框架要求所有实体都驻留在同一个项目中。我试图通过为每个模块创建项目来模块化我的ASP.NET MVC应用程序。因此,我希望模块的域类能够驻留在单个项目中,这对于EF来说是不可能的。 – Toni
为什么不可能? –