Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 当用作实体框架的提供程序时,是否调试/显示SQLite(System.Data.SQLite)的查询?_Entity Framework_Sqlite_Debugging_Ado.net_System.data.sqlite - Fatal编程技术网

Entity framework 当用作实体框架的提供程序时,是否调试/显示SQLite(System.Data.SQLite)的查询?

Entity framework 当用作实体框架的提供程序时,是否调试/显示SQLite(System.Data.SQLite)的查询?,entity-framework,sqlite,debugging,ado.net,system.data.sqlite,Entity Framework,Sqlite,Debugging,Ado.net,System.data.sqlite,我使用MicrosoftEntityFramework和SQLite数据库。当涉及到调试时,我真的很难 现在,我只有在调用“saveChanges()”-方法之后,才能在输出窗口中得到这个 显然EF在更新我的数据时弄乱了一些查询。我正在寻找一种方法来获取查询,这似乎是错误的。我不能听听针对DB的查询是什么吗? 我尝试了其他方法,但也没有提供更多有用的信息: 在堆栈跟踪窗口中,它只显示[外部代码] 我从Microsoft Symbol Server下载了所有符号,但没有更多信息 我在“SaveC

我使用MicrosoftEntityFramework和SQLite数据库。当涉及到调试时,我真的很难

现在,我只有在调用“saveChanges()”-方法之后,才能在输出窗口中得到这个

显然EF在更新我的数据时弄乱了一些查询。我正在寻找一种方法来获取查询,这似乎是错误的。我不能听听针对DB的查询是什么吗?

我尝试了其他方法,但也没有提供更多有用的信息:

  • 在堆栈跟踪窗口中,它只显示[外部代码]
  • 我从Microsoft Symbol Server下载了所有符号,但没有更多信息
  • 我在“SaveChanges()”前面放了一个断点,并使用F11逐步完成了所有操作,但没有显示内部代码(如来自符号文件的代码)
  • 我下载了SQLite的源文件,并将这些项目包括到我的项目中,并编译了源文件。但是它仍然没有通过SQLite源代码。我可以在ObjectExplorer中看到它们,但当我在那里设置断点时,它们并不是完全红色的(无法到达断点。未加载此文档的符号)
  • 在检查System.Data.UpdateException时,我找到了引用SQLite包类的堆栈跟踪,但由于我无法在那里设置断点,因此无法读取那里的参数值。这是stacktrce:
bei System.Data.SQLite.SQLite3.Prepare(SQLiteConnection,String strSql、SQLiteStatement-previous、UInt32 timeoutMS、String和stremain) bei System.Data.SQLite.SQLiteCommand.BuildNextCommand() bei System.Data.SQLite.SQLiteCommand.GetStatement(Int32索引) bei System.Data.SQLite.SQLiteDataReader.NextResult() bei System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd,CommandBehavior) bei System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior (行为) bei System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior (行为) bei System.Data.Common.DbCommand.ExecuteReader(CommandBehavior) bei System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator 转换器,实体连接,字典
2
标识值,列表
1生成值) bei System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter适配器)

  • 在一个相关的SO问题中,答案是查看StateEntries,但正如您在这里看到的。他们也帮不了我

对于查询,您可以尝试使用.ToString()或.ToSqlString()(取决于您使用的是ObjectQuery还是DbQuery),例如:

var sql=db.Entities.ToString()

其中db是DbContext实例。如果db是ObjectContext实例,您可以使用
.ToTraceString()


对于更新,无法访问此信息。调试时,可以使用IntelliTrace查看发送到数据库的命令。如果需要跟踪/记录,可以使用。使用CodeFirst需要一些技巧。我不久前就知道了。

对于查询,您可以尝试使用
.ToString()
.ToSqlString()
(取决于您使用的是ObjectQuery还是DbQuery),我没有使用任何查询。EF为我做一切。如果我理解正确,您希望看到EF为您创建的查询,为此,您可以使用
.ToString()
.ToSqlString()
。请注意,您无法看到以这种方式创建的UPDATE/DELETE语句,因为它们是在SaveChanges中生成的。我的问题是,我从未看到任何查询,因为我让EF执行所有操作(正如您所说的在内部生成)。我不会手动创建查询。然而,我正在寻找一种方法来查看生成的查询中的那些内容。我对VS2010之外的解决方案也很满意。比如跟踪我的应用程序和数据库之间的所有数据库使用情况。你是说查询还是更新/删除?EF无法就其所知提出疑问。您需要使用-instance-Linq编写一个查询。当您这样做时,您可以执行
ToString()
ToSqlString
(例如myDbContext.Customers中的
var c=from c;Write(c.ToString());)
。对于更新和删除,您不能这样做,可以尝试使用IntelliTrace;
SQLite error (1): near "SELECT": syntax error