c# - 数据库感知应用程序的架构

标签 c# design-patterns architecture ado.net repository-pattern

我正在寻找适用于 MS SQL Server 或普通旧 ADO.NET 的“工作单元”和“存储库”模式的引用实现。但是所有示例都是围绕现有上下文构建的,例如 Linq2SQL 或 EF。据我了解,这些技术本身几乎就是在实现这些模式。

但是我如何处理没有任何上下文和 SaveChanges() 方法的“普通”SQL 存储库? TransactionScope 的正确使用方法是什么?例如,将所有 SQL 操作收集在一个命令列表中,然后在 Tx 范围内简单地一个接一个地执行它们……还是这太简单了?

我为什么要找这个?我的任务是构建一个既可以处理古老的 Sybase 数据库又可以处理 SQL Server 的数据层(可能与基于 POCO 的 EF4 组件结合使用)

为此,我的想法是创建一个具有存储库和工作单元模式的抽象层,并为每种技术创建不同的实现。

更新: 上周我正在休假。抱歉耽搁了。今天我为此建立了我的架构的基本图。 [链接] (s7.directupload.net/file/d/2570/whb7ulbs_jpg.htm)。我的想法是创建一个简单的 ObjectContext,例如 EF ObjectContext,它与 EF Context 平行存在,并由我的存储库使用。此上下文在一种堆栈中收集 ATOM Sql 事务,并在工作单元部分的事务中执行它们。好主意?馊主意?难做?我期待着您对此的看法。

最佳答案

我不羡慕你的任务;在您的应用程序中支持多个后端数据库将很棘手。

这是一个使用 ASP.NET MVC 和 LightSpeed 的工作单元模式示例:link

就个人而言,我会使用 EF 或 NHibernate(首选 EF); SQL Anywhere 支持 ADO.NET 和 Entity Framework ,因此(理想情况下)您无需执行任何特殊操作即可支持该数据库。

祝你好运!

关于c# - 数据库感知应用程序的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424833/

相关文章:

c# - this 指的是当前对象。但无法理解以下行为

c# - WPF 中的内部 'border'

c++ - 具有参数化构造函数的抽象工厂

c++ - 我可以使用哪些设计模式?

architecture - 领域驱动设计 : Domain Service, 应用服务

c# - 将字符串转换为 unicode 表示

c# - 在 mvc razor 中更新两个局部 View 的最佳方法

java - 如何使用策略或功能接口(interface)处理基于值(枚举)的多种选择?

database - 如何在 C* (Cassandra) 中执行高效的 SELECT * 查询

ios - VIPER - Interactor 是否应该只返回必要的信息?