2017-10-17 235 views
1

如果數據庫不存在,我想創建數據庫。我使用sqlite作爲數據庫源,並使用Entity Framework。起初,我添加了新的模型(代碼優先),並將當前目錄中的數據庫源設置爲database.db如果不存在,創建數據庫

接下來,我添加了簡單的類:

class User { 
    public int Id { get; set; } 
    public string Email { get; set; } 
    public string Password { get; set; } 
} 

當然數據庫上下文和:

class TestContext : DbContext { 
    public DbSet<User> Users { get; set; } 

    public TestContext() :base("TestModel"){ 
     //Create database always, even If exists 
     Database.SetInitializer<TestContext>(new DropCreateDatabaseAlways<TestContext>()); 
    } 
} 

我已經在app.configconnectionString

<connectionStrings> 
    <add name="TestModel" connectionString="data source=&quot;C:\Users\root\Documents\Visual Studio 2015\Projects\dbTEST\dbTEST\bin\Debug\database.db&quot;" providerName="System.Data.SQLite.EF6" /> 
</connectionStrings> 

而且出於某種原因運行這段代碼後:

using (var ctx = new TextContext()) { 
    ctx.Database.Create(); 
} 

我得到錯誤:

An unhandled exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll 

Additional information: Database 'main' cannot be created because it already exists. 

我無法理解什麼是錯。我不知道數據庫來自哪裏main。我將數據庫文件設置爲database.db。你能幫助我嗎?

+0

你想在Ef核心或實體框架6? –

+0

我有同樣的問題。即使我重寫InitializeDatabase並做一個手動的Database.Create(),當我知道它不存在。 @Dawvawd:你有沒有解決過這個問題? – cmxl

回答

0

您的構造函數規定每次啓動應用程序時都會刪除和創建數據庫。

因此,刪除ctx.Database.Create(),因爲這是由框架處理。

相關問題