關於實體Framework4,Lambda表達式和數據傳輸對象(DTO),我有一個半複雜的問題。EF4,Lambda,存儲庫模式和DTO
因此,我有一個小型的EF4項目,並遵循既定的面向對象原則,我有一個DTO在數據使用者(GUI)和數據模型之間提供一個抽象層。
- VideoDTO = DTO與getter/setter方法,由EF4 生成的GUI
- VideoEntity =實體使用
我的問題是圍繞由GUI使用DTO的(和不具有GUI使用實體),結合需要傳遞一個lambda到數據層。我的數據層是Add的基本存儲庫模式。更改,刪除,獲取,的GetList等 試圖執行一個簽名查找方法,像這樣:
public IEnumerable<VideoDTO> Find(Expression<Func<VideoEntity, bool>> exp)
...
_dataModel.Videos.Where(exp).ToList<Video>()
---
我的問題/關心的是「EXP」需要爲類型VideoEntity代替VideoDTO的。我想保留關注的分離,以便GUI不知道實體對象。但如果我試圖通過
Func<VideoDTO, bool>
我不能再做一個LINQ在那個表達式上使用實際的數據模型。
有沒有辦法到Func<VideoDTO,bool>
轉換爲Func<VideoEntity, bool>
理想的情況下我的方法簽名會接受Func<VideoDTO, bool>
和這樣的GUI就沒有參考的基礎數據實體。
這足夠清楚了嗎?謝謝你的幫助
感謝您的repliesto你們倆。
我會嘗試在對象中定義搜索條件並在LINQ表達式中使用它的想法。剛開始使用EF4和L2S時,將其用作學習項目。
再次感謝!