没有 Entity Framework Code First 的 sql 分析
Posted
技术标签:
【中文标题】没有 Entity Framework Code First 的 sql 分析【英文标题】:no sql profiling for Entity Framework Code First 【发布时间】:2011-08-09 14:47:21 【问题描述】:我已经为此苦苦挣扎了一段时间,我发现我不是唯一一个遇到问题的人(请参阅 this 和 that)。
我已经设法调试了一下,并找到了解决方案,尽管我很确定这不是“正确”的方式。
第一个调试会话(在启用开发服务器之前)显示 ProfiledDbConnectionFactory 和 ProfiledDbConnection 类提供了所需的数据,但是在创建连接之后, ProfiledDbProviderFactory 上的静态 Instance 属性已初始化(通过调用默认构造函数),并且显然 CreateConnection() 在该实例上运行,结果为空引用异常(尾部为空)。
我已经通过运行解决了这个问题
ProfiledDbProviderFactory.Instance.InitProfiledDbProviderFactory(_profiler, ripInnerProvider(_conn));
在ProfiledDbConnection(DbConnection 连接,IDbProfiler 探查器)结束时。
这使我可以查看 sql 分析,但正如我所写,我感觉这不是正确的解决方法。
这是我使用的示例code。 不确定我的环境或代码是否有问题,因为我觉得这应该开箱即用。任何cmets /建议? 山姆?
【问题讨论】:
能否请您发布更多代码以及您遇到的具体问题? 【参考方案1】:使用 ProfiledDbConnectionFactory 实体框架没有任何问题,旨在支持无知我通常只是使用调试器工具并创建一个断点来查看我生成的 sql 语句,因为代码优先框架在那里很容易提供 sql 语句
我会坚持按照您在单元测试中描述的方式使用配置文件连接,而不是在生产代码中使用它,因为配置文件可能会影响性能,您还想考虑使用 sql server 中包含的 sql profiler 和那里也是一个 sql 分析器,可作为 Visual Studio 扩展使用,但我不确定它是否首先支持代码
【讨论】:
感谢您的提示,但这不是我要说的——我不是在寻找不同的分析器——我正在寻找一种方法让 mvc 迷你分析器与我的代码一起工作 【参考方案2】:MiniProfiler.EF 1.9.1 版本已解决此问题
【讨论】:
以上是关于没有 Entity Framework Code First 的 sql 分析的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework Code-First(23):Entity Framework Power Tools
Entity Framework应用:Code First模式数据迁移的基本用法
与 Code First Entity Framework 的单向多对多关系
Entity Framework Code-First(10.2):Entity Mappings