现在我使用Dapper处理数据
代码如:
using(var connection = new SqlConnection(ConfigurationManager.AppSettings["MyConnectString"])
{
var sql = string.Format(
@"SELECT [Column1]
FROM [MyTable]
WHERE [Column3] > {0}
AND [Column4] < {1}"
, myValue1
, myValue2
);
var result = connection.Query<long>(sql).ToList();
}
我的项目将编写如上所述的许多sql脚本。
我想编写脚本到文件(可能是QueryAccount.config,QueryOrder.config,(xml格式)......或其他更好...)
然后我可以从文件中加载脚本......
我想要的是在文件中编写脚本,然后在文件中编写相同的类。 (例如,我在Product.config中编写所有查询产品脚本,并在Order.config中编写所有查询订单脚本)然后我使用like
var cmd = MyCommandManager.GetScript("QueryProduct");
cmd.SetParam("@ProductId", 123);
cmd.SetParam("@InvoicingDate", DateTime.Now(-7))
...
文件中的脚本如:
SELECT [ProductName]
FROM [Product]
WHERE [ProductId] = @ProductId
AND [InvoicingDate] = @InvoicingDate
忽略了downvoters。 SQL应始终位于自己的文件中。这些文件的扩展名应为.sql,而不是.config。因此,它们将在VS SQL编辑器中进行编辑,真正的舒适。我想每个查询需要一个文件。通过在同一文件中对不同查询进行分组,无法获得任何结果。我主张将这些文件放在使用它们的.cs文件旁边,将您打开的文件组合在一起,以及有时可能要一起删除的文件。
创建后,右键单击解决方案资源管理器中的.sql,属性 - >构建操作 - >嵌入式资源。然后,在MyCommandManager.GetScript()方法中,使用GetManifestResourceStream()来访问查询文本。与存储过程相比,这具有使用调用代码编译查询的巨大优势,因此您无需担心同步存储过程的版本和应用程序。
如果所有这些看起来像很多工作,那就有点了。这就是为什么没有人这样做,但他们应该:-) Grab QueryFirst ,它将为你完成,还有很多其他的。免责声明:我写过QueryFirst。