我有一个特定的场景,我想知道是否(以及如何)实体框架可能能够解决。如何用动态概念层实现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