你如何在c#中嵌入sql查询

时间:2011-08-15 11:05:09

标签: c# sql entity-framework

我正在C#中编写一个包含大量SQL查询的新项目。有些相对较大且复杂。我想知道存储它们的最佳方法是什么。理想情况下,我会在数据库上创建存储过程,但许多其他应用程序都使用该数据库,所以如果我能在我的应用程序中保留特定于我的应用程序的过程,那就更好了。

选项似乎是:

  1. 字符串文字(const string query ="Select * From MyTable"
    • 优点:简单,简短
    • 缺点:没有语法突出显示,长时间查询凌乱
  2. 为每个查询创建一个文件QueryName.sql
    • 优点:语法突出显示,适合大型复杂查询
    • 缺点:大量查询的文件很多(每个文件一个查询),从内容文件中读取查询的速度可能较慢?
  3. 还有其他想法吗?
  4. 另外一个想法是,有没有办法从SQL查询中轻松生成强类型类定义?

3 个答案:

答案 0 :(得分:21)

另一种选择是:

4:为每个查询创建一个文件QueryName.sql

但要使其成为装配中的嵌入资源。这样,您在磁盘上没有物理文件,但您的SQL查询很好地隐藏在Visual Studio解决方案中的自己的文件中,您可以轻松地将SQL文本从这些嵌入的资源中提取到SqlCommand个对象中

查看这些资源以帮助您入门:

答案 1 :(得分:2)

为什么不简单地使用Entity框架或Linq-to-SQL

如果您有一个名为Foos yoiu的表,最终会得到如下代码:

using(var db = new MyEntityBase()){

    var selectedFoo = from foo in db.Foos
                      where foo.Bar > 4
                      select foo;
    //Do stuff
}

反过来转换为SQL,如:

select * from Foos where Bar = 4

上面的C#代码都是强类型的,Entity框架将为您创建所有需要的数据类。

答案 2 :(得分:0)

我会选择像EF或亚力士这样的ORM。