ServiceStack OrmLite Sql 查询日志
Posted
技术标签:
【中文标题】ServiceStack OrmLite Sql 查询日志【英文标题】:ServiceStack OrmLite Sql Query Logging 【发布时间】:2012-07-16 20:56:57 【问题描述】:根据Service Stack Ormlite documentation。我应该在调试模式下生成 sql 查询。但是,我看不到这些查询。简单的代码
private static readonly string DataDirLoc =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
"\\TargetIntegration\\Test\\Debug\\";
private readonly string dbFileName = DataDirLoc +
"Test.db3";
[Test]
public void Can_Generate_log()
//var writer = new TextWriterTraceListener(System.Console.Out);
//Debug.Listeners.Add(writer);
Debug.Write("this is a try");
var dbFact = new OrmLiteConnectionFactory("Data Source=0;Version=3;".FormatParams(dbFileName), true,
SqliteOrmLiteDialectProvider.Instance);
IDbConnection dbConnection = dbFact.OpenDbConnection();
var dbCommand = dbConnection.CreateCommand();
dbCommand.CreateTable<Contact>();
【问题讨论】:
【参考方案1】:您需要 OrmLite 的调试版本才能查看 SQL 输出。 您可以通过其他几种方式查看最后一条 sql:
Console.WriteLine(dbCmd.GetLastSql());
您还可以通过设置连接过滤器来分析数据库连接,您可以这样做:
var dbFact = new OrmLiteConnectionFactory(
"Data Source=0;Version=3;".Fmt(dbFileName), true,
SqliteOrmLiteDialectProvider.Instance)
ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
;
如果您在ServiceStack 中运行此程序,您将看到所有 SQL 语句的分析时序输出。此处提供了一个示例:
https://gist.github.com/1787443
【讨论】:
感谢黛米斯。但是,我在 Windows 应用程序中使用 ORMlite。我不认为我可以使用 MVC 迷你分析器。可能是我错了。请指导。 默认情况下,dbCommand 上没有扩展方法“GetLastSql()”,我可以使用“CommandText”。但它只给出最后执行的语句。 好吧,如果您托管了一个 ServiceStack 自托管 HttpListener 服务,您可以 :) 但是 WinApp 中的网络服务器对于调试来说似乎有点繁重。您还可以创建自己的 ProfiledDbConnection 并将所有 SQL 记录到控制台。这是源代码github.com/ServiceStack/ServiceStack/blob/master/src/… 更新 NuGet,如果您没有dbCmd.GetLastSql()
,但它只是 dbCmd.CommandText 的一个包装器,所以如果您想要更多,将无济于事:)
很好的建议 :).. 我想我会创建自己的“ProfiledDbConnection”无论如何谢谢.. 很大的帮助以上是关于ServiceStack OrmLite Sql 查询日志的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 和 ServiceStack.OrmLite 中使用架构名称
VeraCode 报告 ServiceStack OrmLite 对 SQL 命令中使用的特殊元素进行了不当中和(“SQL 注入”)(CWE ID 89)
ServiceStack Webhook + ServiceStack.Webhooks.OrmLite 订阅商店插件问题