我正在嘗試構建允許查詢域類的通用存儲庫。針對域類的查詢應針對實體解析
我的倉庫界面看起來如下:
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
爲什麼不可能? –