SQLite 创建数据库不支持错误。

4
我正在使用带有SQLite的Entity Framework 4.2 CF,但是在尝试启动应用程序时,我收到了“CreateDatabase不受提供程序支持”的错误消息。这是我的模型映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            #region NewsMapping

            modelBuilder.Entity<News>().ToTable("news");
            modelBuilder.Entity<News>().HasKey(x => x.Id).Property(x => x.Id).HasColumnName("ID").HasColumnOrder(0);
            modelBuilder.Entity<News>().Property(x => x.Status).HasColumnName("STATUS");
            modelBuilder.Entity<News>().Property(x => x.NewsTitle).HasColumnName("NEWS_TITLE");
            modelBuilder.Entity<News>().Property(x => x.Content).HasColumnName("CONTENT_1");
            modelBuilder.Entity<News>().Property(x => x.IsImportant).HasColumnName("IS_IMPORTANT");
            modelBuilder.Entity<News>().Property(x => x.OrderNumber).HasColumnName("ORDER_NUMBER");
            modelBuilder.Entity<News>().Property(x => x.CreateDate).HasColumnName("CREATE_DATE");
            #endregion

            base.OnModelCreating(modelBuilder);

        }

这段代码有什么问题?
谢谢
4个回答

9

代码没有问题。错误信息已经清楚地指出了问题所在。你使用的SQLite的EF提供程序 (System.Data.SQLite) 不提供数据库创建功能,因此在启动应用程序之前必须手动创建数据库和所有表。


5
我因为没有在web.config文件中正确指定数据库文件的位置,所以在使用EF 6.1.3System.Data.Sqlite 1.0.103时遇到了错误。
为解决该问题,我将数据库文件移动到了App_Data目录,并将连接字符串更改为connectionString="data source=|DataDirectory|databaseName;Version=3;"

那真的解决了我的问题。同时创建了缺失的 App_Data 文件夹。 - Nikolay Kostov

4

好的,我找到了解决方案,提供程序不支持“数据库创建”,因此我必须将其初始化为空:

public EkosContext()
        {
            Database.SetInitializer<EkosContext>(null);
        } 

3
你是如何应用这个模型的? - Spock

0

由于我的web.config中的sqlitedb路径错误,这个问题非常简单和愚蠢,但令人烦恼。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接