c#/.net项目如何保存/组织数据库查询

标签 c# .net database project-management workflow

在我的第一个 C# 项目中,我需要连接到数据库服务器以进行多个只读查询。有人会分享有关如何将查询组织到项目中的经验吗?目前我只是在需要时在 c# 源文件中硬编码查询字符串。但它很难维护,一旦数据库服务器端发生变化,我就有麻烦了。或者我应该使用 appsettings 将所有查询字符串放在 .config 文件中吗?有更好的方法吗?我无权在服务器上保存存储过程。谢谢。

最佳答案

根据您的需要,有不同复杂程度的不同答案。除了最小的项目,我创建了两个用于数据库访问的类库项目:一个包含数据模型和查询,另一个测试项目执行第一个项目的查询。在简单的解决方案中,您可以在 ASP.NET 或其他项目中使用此库。

你应该强烈考虑学习像 NHibernate 这样的 ORM或 VS 2008/.NET 3.5's Linq-To-SQLEntity Framework .至少,你必须记得使用 parameterized queries如果您有面向网络的应用程序。

在更复杂的解决方案中,您会将数据库完全封装到它的 own service, or tier 中.根据我的经验,我有一个数据访问层在它自己的 Windows Communication Foundation 服务中运行,作为 Windows 服务,它是唯一可以直接与数据库对话或知道数据库数据模型的服务。它将与数据库进行所有交互,然后将数据转换为不同的数据模型,供其他层读取。我通常会创建一个名为“Contracts”的项目,其中包含从数据层到系统其余部分的所有接口(interface)和数据模型。您这样做的原因是为了避免您提到的痛苦:您可以更新底层数据库、ORM 层和“公共(public)数据模型”,然后根本不更改其他层。

关于c#/.net项目如何保存/组织数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147740/

相关文章:

c# - 在 Silverlight 中调用 WCF 服务时使用 Observable.FromEvent

c# - 如何使用 Linq To XML 获取元素值

sql - 在 Silverlight 中使用数据库?

database - 为什么可重复读会出现写偏斜?

c# - 表达式<Action<T>> 方法调用

c# - 在 .net Rider IDE : Failed to download package `x` The HTTP request to GET `x` has timedout after 100000ms 中恢复解决方案的 nuget 包

c# - WinForms C# 按钮可见性

c# - NHibernate映射一对多

c# - Silverlight 3 WCF 服务 `CommunicationException` 服务器返回错误 : NotFound

java - 如何使用一组可变的字符串进行类似查询?