如何使用EF在SQLite DB中检索和设置user_version

Tra*_*uy9 12 c# sqlite entity-framework-4

我想要做的是加载并从我的SQLite数据库中设置user_version(PRAGMA user_version).我正在使用实体框架,但是如果我不能通过它实现它,那么我需要能够在C#4.0中以其他方式实现它.

我试过了:

this.DatabaseConnection.Connection.Open();
System.Data.Common.DbCommand cmd = this.DatabaseConnection.Connection.CreateCommand();
cmd.CommandText = "PRAGMA user_version";
cmd.CommandType = System.Data.CommandType.Text;
System.Data.Common.DbDataReader reader = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

其中DatabaseConnection是我的EF上下文,Connection是上下文中的DbConnection对象,但是我得到一个例外:

查询语法无效.接近标识符'user_version',第1行,第8列.

Tra*_*uy9 13

嗯......我终于明白了.我相信这是使用实体框架时最好的方法.

要设置user_version,您需要执行此操作...

this.DatabaseConnection.ExecuteStoreCommand("PRAGMA user_version = 5");
Run Code Online (Sandbox Code Playgroud)

要获得user_version,您需要执行此操作...

long result = this.DatabaseConnection.ExecuteStoreQuery<long>("PRAGMA user_version").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

  • 在EF的更高版本中,它是`model.Database.SqlQuery <long>("...")`. (3认同)