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

c#/.net项目如何保存/组织数据库查询,c#,.net,database,project-management,workflow,C#,.net,Database,Project Management,Workflow,在我的第一个c#项目中,我需要连接到数据库服务器进行多个只读查询。有人会分享如何将查询组织到项目中的经验吗?目前,只要需要,我就在c#源文件中硬编码查询字符串。但它很难维护,一旦数据库服务器端发生变化,我就有麻烦了。或者我应该使用appsettings将所有查询字符串放入.config文件中吗?有更好的方法吗?我没有在服务器上保存存储过程的权限。谢谢 根据您的需要,有不同的答案,其复杂程度各不相同。除了最小的项目之外,我为数据库访问创建了两个类库项目:一个包含数据模型和查询,另一个测试项目执行第

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

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

你应该强烈地考虑学习ORM或。至少,如果您有面向web的应用程序,您必须记住使用


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

如果这是您的第一个项目,请尽量保持简单。如果你添加了太多的变量,你最终可能会更多地考虑技术而不是解决方案

也就是说,如果您的查询不希望更改其参数,则可以使用存储过程。这种方法还有助于提高查询效率,因为执行计划将保存在数据库中