我将Microsoft Entity Framework与SQLite数据库一起使用。我在调试方面遇到了很多困难。
现在我在调用“saveChanges()”之后只在我的输出窗口中得到这个 - 方法
SQLite error (1): near "SELECT": syntax error
显然,在更新数据时,EF搞砸了一些查询。我正在寻找一种获取查询的方法,这似乎是错误的。我不能听到针对数据库触发的查询吗?
我尝试了其他的东西,但也没有提供更多有用的信息:
bei System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn,String strSql,SQLiteStatement previous,UInt32 timeoutMS,String& strRemain) bei System.Data.SQLite.SQLiteCommand.BuildNextCommand() bei System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index) 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 behavior) bei System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator) 翻译器,EntityConnection连接,字典
2 identifierValues, List
1 generatedValues) bei System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager) stateManager,IEntityAdapter适配器)
答案 0 :(得分:0)
对于查询,您可以尝试使用.ToString()或.ToSqlString()(取决于您使用的是ObjectQuery还是DbQuery),例如:
var sql = db.Entities.ToString()
其中db是DbContext实例。如果db是ObjectContext实例,您将使用.ToTraceString()
。
对于更新,无法访问此信息。调试时,您可以使用IntelliTrace查看发送到数据库的命令。如果您需要跟踪/记录,可以使用EF Tracing provider。需要一些技巧才能使它与CodeFirst一起使用。我前段时间blogged。