.NET:抽象数据源和数据上下文
我正在尝试为我最常见的开发场景编写可重用组件: 我制作了一个通用表示层来表示要封装在域对象中的域对象和数据对象(dc serializable)。我还拥有某种域状态/上下文,在其中我将引用我的所有域对象实例。其思想是域对象具有特殊的集合,这些集合在第一次按需访问时从数据源填充。我想这不完全是“DDD”,但它似乎有效 无论如何,现在我被困在datacontext和datasource部分。我一直在思考如何存储数据并与数据源交互;zip文件中的xml、sql server、sql lite文件、实体框架、nhibernate、linqtosql、mongodb等,我无法决定使用什么。似乎我需要抽象掉数据源和数据上下文,而不是决定在每个应用程序中使用什么。重要的是,我不会在特定框架上嵌入任何硬依赖项 将datacontext和datasource抽象出来,并使其在各种现有框架中都能轻松工作,这是否现实?我想错了吗?这是一条死胡同吗 我所希望和需要的(我认为)是我的domainstate能够查询datacontext以查找与某些标准匹配的对象。我不确定它是否能够处理整个对象图,或者只处理单个数据对象,或者甚至不能处理具体类型,而只能处理一些通用对象,或者是否应该为每个请求克隆它们。当我开始思考这个问题时,我感到非常困惑 嘎 更新: 我将DataContext/DatabaseContext(例如EntityFramework)视为一个模块/层,用于将对象缓存在内存中,执行查询,从任何数据源获取和存储数据,并将类型化对象返回给使用者。是这样吗 存储库模式(DDD)和我的DataContext有什么区别 更新2: 基本上,这就是我的模型(好还是坏?): DataSource->DataContext/DataObject->DomainState/DomainObject->Presenter 似乎我需要抽象掉数据源和数据上下文,而不是决定在每个应用程序中使用什么。重要的是,我不会在特定框架上嵌入任何硬依赖项 这就是存储库模式 存储库模式(DDD)和我的DataContext有什么区别 存储库是一种抽象与存储访问相关的所有内容的方法。它旨在满足应用程序的需求,并接收/发回应用程序其余部分已知的对象。DataContext是EF的一个实现细节,它本身就是存储库的一个实现细节 存储库具有双重用途.NET:抽象数据源和数据上下文,.net,database,entity-framework,domain-driven-design,entitydatasource,.net,Database,Entity Framework,Domain Driven Design,Entitydatasource,我正在尝试为我最常见的开发场景编写可重用组件: 我制作了一个通用表示层来表示要封装在域对象中的域对象和数据对象(dc serializable)。我还拥有某种域状态/上下文,在其中我将引用我的所有域对象实例。其思想是域对象具有特殊的集合,这些集合在第一次按需访问时从数据源填充。我想这不完全是“DDD”,但它似乎有效 无论如何,现在我被困在datacontext和datasource部分。我一直在思考如何存储数据并与数据源交互;zip文件中的xml、sql server、sql lite文件、实体