我正在尝试运行一个演示应用程序来对Linq-to-Sqlite进行POC。我正在使用最新的System.Data.Sqlite NuGet包和.Net Framework 4.5来创建示例控制台应用程序,该应用程序最初只会创建数据库文件。代码只是创建一个Movie类的对象,并将其添加到DbContext类的DbSet属性中。但是,在SaveChanges()上,我得到一个System.Data.Entity.Infrastructure.DbUpdateException,并显示消息“no such table:Movie”。以下是我的代码:
if (!File.Exists(_databaseFilePath))
SQLiteConnection.CreateFile(_databaseFilePath);
using (var dbContext = new MovieAppContext())
{
dbContext.Movies.Add(new Movie(1, "Titanic", 7.5));
var retVal = dbContext.SaveChanges();
}
public class MovieAppContext : DbContext
{
public MovieAppContext():base("MovieAppConStr")
{
}
public MovieAppContext(string connectionString)
: base(connectionString)
{ }
public DbSet<Movie> Movies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Chinook Database does not pluralize table names
modelBuilder.Conventions
.Remove<PluralizingTableNameConvention>();
}
}
编辑:所以问题是,就像Linq-to-Sql一样,Linq-to-Sqlite提供程序允许我们在数据库中创建相当于使用代码优先创建的模型的表方法?
答案 0 :(得分:0)
实体框架代码首先与SQLite一起使用现有数据库,所以没有。有一些替代的sqlite EF提供程序支持使用Code First ... Devart例如
来支持数据库创建