首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我的应用程序的数据层可以与任何数据库一起使用,那么它应该是什么样子的?

如果我的应用程序的数据层可以与任何数据库一起使用,那么它应该是什么样子的?
EN

Stack Overflow用户
提问于 2012-09-08 18:05:08
回答 3查看 167关注 0票数 1

我正在编写一个应用程序,它可以连接到任何SQL Server数据库,因此可以认为是独立的。换句话说,应用程序做的第一件事就是请求一个连接字符串。此应用程序将在数据库上执行查询和其他任务,因此需要SQL语句。

因此,由于我不打算为应用程序指定预定义的数据库,那么如何从我的C#应用程序执行SQL语句呢?我认为存储过程是不可能的,因为应用程序可以连接到任何数据库。

我可以很容易地在应用程序本身中对SQL语句进行硬编码,但我想知道在这种情况下,最佳实践方法是什么。是否可以将SQL语句嵌入到应用程序中,从而将业务逻辑和数据层本质上放在同一个应用程序中?我对此没有逻辑或技术上的问题,只是想知道这是否是一种有效的方法,或者它是否会被经验丰富的开发人员所反对?

我听说过Entity Framework,但老实说,我不确定它是做什么的,也不知道它是否有效。到目前为止,我的所有数据驱动应用程序都使用了存储过程,这是我第一次编写可以与运行时指定的数据库一起使用的应用程序。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-08 18:46:32

由于您正在构建一个查询构建器(没有双关语),因此您需要查询database catalog,这对于同一种DBMS下的所有数据库都是相同的。这将允许您获得任何给定数据库中的tables和其他对象的列表,以便将它们呈现给用户。

是使用纯ADO.NET还是ORM是一个正交问题。

票数 0
EN

Stack Overflow用户

发布于 2012-09-08 18:38:15

是的,将SQL查询嵌入到应用程序中是可以接受的。您可以使用资源文件,而不是在代码中对它们进行硬编码。连接字符串提供程序名称应使您能够为要连接的数据库选择正确的SQL方言。

请参阅使用类似方法的Event stores SQL persistence factory ResolveDialect方法。它也使用它来确定创建和调用存储过程所需的语法,而您的应用程序将(我假设)需要调用返回数据库元数据/结构的SQL。虽然它们调用的SQL是不同的,但这种模式应该非常适合您的应用程序,允许您支持许多不同的数据库。

根据您试图实现的目标,您可能还需要创建一个内部模型来表示数据库中的表、列等元数据。

编辑

对不起,我只是看到了关于只作为SQL服务器的评论。因此,客户端可以更多地使用SQL方言来确定SQL查询的结构(例如,对于代码完整)。

票数 0
EN

Stack Overflow用户

发布于 2012-09-08 18:11:27

如果您在.Net中进行开发,则应考虑使用Microsoft enterprise library

它提供了有关构建可伸缩应用程序的全面详细信息。

编辑:

您必须考虑处理不同的驱动程序,以处理不同的数据库引擎。可能不可能在所有数据库上运行相同的查询,因为它们通常遵循不同风格的sql。例如,mssql使用TSql,而as Oracle使用PL-Sql。

另一种解决方案是遵循Ansi sql标准。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12329793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档