【发布时间】:2012-03-13 17:35:34
【问题描述】:
我正在尝试为我最常见的开发场景编写可重用组件:
我已经制作了一个通用的表示层来表示要封装在域对象中的域对象和数据对象(dc-serializable)。我还有某种域状态/上下文,我在其中保留了所有域对象实例的引用。这个想法是域对象具有特殊的集合,当它们第一次被按需访问时,这些集合会从数据源中填充。我认为这不完全是“DDD”,但它似乎有效......
无论如何,现在我被困在 datacontext 和 datasource-part 上。我一直在思考如何存储数据并与数据源交互; zip 文件、sql-server、sql-lite-files、实体框架、nhibernate、linqtosql、mongodb 等中的 xml,我无法决定使用什么。看来我需要抽象出数据源和数据上下文,而是决定在每个应用程序中使用什么。重要的是我没有在特定框架上嵌入任何硬依赖。
抽象出数据上下文和数据源,并且仍然可以轻松地与各种现有框架一起工作,这是否现实?我想错了吗?这是一个死胡同吗?
我想要和需要的(我认为)是我的域状态,以便能够在数据上下文中查询符合某些条件的对象。我不确定它是否应该能够与整个对象图或仅单个数据对象一起使用,或者甚至不能使用具体类型而只能使用一些通用对象,或者是否应该为每个请求克隆它们。当我开始思考这个问题时,我感到很困惑......
嘎嘎
更新:
我将 DataContext/DatabaseContext(例如 EntityFramework)视为一个模块/层,用于将对象缓存在内存中、执行查询、从任何数据源获取和存储数据并将类型化的对象返回给消费者。是这样吗?
Repository-pattern (DDD) 和我的 DataContext 有什么区别?
更新 2:
基本上,这是我的模型(好还是坏?):
DataSource->DataContext/DataObject->DomainState/DomainObject->Presenter
【问题讨论】:
标签: .net database entity-framework domain-driven-design entitydatasource