我有一個特定的場景,我想知道是否(以及如何)實體框架可能能夠解決。如何用動態概念層實現EF?
我正在開發一個新的解決方案的框架,這個解決方案將被傳遞給許多開發人員以隨着時間的推移而進行擴展和增強。我想提供一個簡單的數據訪問層,他們可以利用他們正在實現的領域層,而不需要他們更改數據訪問代碼。我正在研究不同的工具,比如NHibernate,LINQ-to-SQL,EF以及老的ADO.NET。
作爲我後一個實例中,使用LINQ到SQL,在域中的層的代碼將呼籲L2S的DataContext它返回一個IQueryable <Ť>的GetTable <Ť>方法。從理論上講,這意味着DataContext可以解析任何T的請求。當然,實際上,DataContext必須知道如何處理T.看看EF如何工作,我看到了與其他工具的一些相似之處,但可以我很難找到自己如何實現自己的目標。這裏是想什麼,我有發生:
我提供一個默認的「上下文」暴露喜歡GetTable <牛逼>(例如查詢<牛逼>)返回的IQueryable <牛逼>的方法。這允許未來的增強,其中T代表尚未實現的EntityTypes,並且使得開發人員可以更容易地專注於域層,因爲他們所需要做的就是調用GetTable <T>(或類似的)。
域開發人員唯一的其他要求是提供概念層(T)映射到存儲層(物理數據庫模式)的映射層。
FWIW,我相信這很容易用NHibernate通過映射XML文件來完成。有沒有辦法使這項工作與EF?
感謝您的鏈接。由於我已經知道如何處理版本庫和UoW,所以後兩個版本沒有多大幫助。但是,從第一篇文章鏈接到「前一篇文章」之後,突出強調了使用EntityConfiguration類添加新映射,這是我不知道的。我會進一步研究,但我不確定這是否符合法案,因爲它似乎需要一個新的背景。我希望能夠實現更多的網關解決方案,其中可以根據需要使用和擴展單個上下文。我會再看看EntityConfiguration。 – SonOfPirate