数据库感知应用程序的体系结构

Art*_*hur 7 c# architecture ado.net design-patterns repository-pattern

我正在寻找MS SQL Server或Plain old ADO.NET的"工作单元"和"存储库"模式的参考实现.但所有样本都是通过Linq2SQL或EF等现有上下文构建的.据我了解,这些技术本身几乎都在实施这些模式.

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

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

为此,我的想法是创建一个带有Repository和Unit of Work Pattern的抽象层,并为每个技术创建不同的实现.

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

Bra*_*ine 1

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

以下是使用 ASP.NET MVC 和 LightSpeed 的工作单元模式的示例:链接

就我个人而言,我会使用 EF 或 NHibernate(更喜欢 EF);SQL Anywhere 支持 ADO.NET 和实体框架,因此(理想情况下)您不需要执行任何特殊操作来支持该数据库。

祝你好运!