首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL逻辑放在哪里

将SQL逻辑放在哪里
EN

Stack Overflow用户
提问于 2009-09-28 10:23:15
回答 8查看 802关注 0票数 2

我有一个现有的SQL Server数据库,虽然我可以根据需要添加存储过程或新表,但我不能真正更改其结构。我必须编写一个独立的程序来访问数据库,处理数据并生成一些报告。我选择了C#和Visual Studio,因为我们几乎就是一个微软商店。

我已经开始探索使用VS2008来创建上述程序。我正在试着决定把一些SQL逻辑放在哪里。我的主要目标是使开发尽可能简单,并快速执行。

我是否应该将SQL逻辑放到一个存储过程中,然后简单地调用该存储过程,让SQL Server执行繁重的工作并将结果交给我?或者,我最好将SQL查询保存在代码中,创建相应的命令并对SQL Server执行它?

我感觉前者的性能可能会更好,但我必须将存储过程与我的代码库的其余部分分开管理,不是吗?

更新:有人指出,如果在C#程序或存储过程中使用相同的SQL代码,性能应该是相同的。如果是这样的话,哪一个是最容易维护的?

2009年10月02日:我不得不认真考虑该选择哪一个答案。在撰写本文时,有8个答案,基本上分为5-3个,支持将SQL逻辑放在应用程序中。另一方面,有11票赞成,9票赞成,2票反对,支持将SQL逻辑放在存储过程中(以及几个关于这种方式的警告)。所以我很纠结。最后,我还是会投更高的票。但是,如果我遇到麻烦,我会回来更改我选择的答案:)

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-09-28 10:29:48

如果是繁重的数据操作,请将其保存在存储过程中的数据库中。如果查询可能会更改一些,则更好的位置也应该在数据库中,否则可能需要对每个更改进行重新部署。

票数 8
EN

Stack Overflow用户

发布于 2009-09-28 12:29:07

将主要工作保留在存储过程中具有灵活性的优势-我发现修改过程比实现程序更改更容易。不幸的是,灵活性是一把双刃剑;它也更容易做出不明智的更改。

票数 3
EN

Stack Overflow用户

发布于 2009-09-28 10:30:46

我建议看一看LINQ to Entities,它为任何SQL语句(CRUD)提供了一个对象关系映射包装器( Object Relational Mapping wrapper ),抽象出写入数据库所需的逻辑,并允许您编写OO代码,而不是使用SQLConnections和SQLCommands。

OO代码( save方法不存在,但您得到了它的要点):

代码语言:javascript
复制
// this adds a new car to the Car table in SQL, without using ANY SQL code
Car car = new Car();
Car.BrandName = "Audi";

Car.Save(); //save is called something else and is on the 
// datacontext the car is in, but for brevity sake..

SqlCommand中的字符串形式的SQL代码:

代码语言:javascript
复制
// open sql connection in your app and 
// create Command that inserts car
SqlConnection conn = new SqlConnection(connstring);
SQlCommand comm = new SqlCommand("INSERT INTO CAR...");

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

https://stackoverflow.com/questions/1486342

复制
相关文章

相似问题

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