2014-12-27 102 views
0

我想在ASP.NET中創建一個簡單的項目,'代碼優先'代碼優先 - 不創建數據庫

所以我做了一個類EFDbContext:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 

namespace MVCRubenWouters.Models 
{ 
    public class EFDbContext: DbContext 
    { 
    public EFDbContext() : base("name=rubenwoutersdbCF") 
    { 
     Database.SetInitializer<EFDbContext>(new EFDbInitializer()); 
    } 
     public DbSet<Types> Types { get; set; } 
    } 
} 

而且在 'web.config中'

<connectionStrings> 
    <add name="rubenwoutersdbCF" connectionString="Data Source=.\SQLSERVER2012;Initial Catalog=rubenwoutersdbCF;Integrated Security=True;MultipleActiveResultSets=true" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

然後,我創建了一個類「EFDbInitializer的東西添加到數據庫中增加了一個ConnectionString的:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 

namespace MVCRubenWouters.Models 
{ 
    public class EFDbInitializer: DropCreateDatabaseAlways<EFDbContext> 
    { 
    protected override void Seed(EFDbContext context) 
    { 
     Types t1 = new Types() 
     { 
     PK_TypeNr = 1, 
     TypeKeuken = "Belgisch", 
     TypeZaak = "Restaurant", 
     Vegetarisch = false 
     }; 

     context.Types.Add(t1); 
     context.SaveChanges(); 
    } 
    } 
} 

當我運行該項目,並轉到SQL服務器管理工​​作室(和刷新),沒有ne w數據庫有..

我在這裏做錯了什麼? :/

+0

您是否已將Mgmt Studio連接到'。\ SQLSERVER2012'實例? – 2014-12-27 15:19:55

+0

@marc_s是的,我做到了。 – RW24 2014-12-27 15:30:35

+0

嘗試調用實體框架,如果出現問題,您應該得到關於它的Exception。嘗試調用這個:'new EFDbContext()。Types.ToList();' – Dan 2014-12-27 16:20:36

回答

0

我建議你在SQL服務器中創建你的數據庫,建立你的表,然後用你的代碼填充它們。

+1

我認爲Code首先意味着你通過代碼創建你的數據庫? (這是一個學校的分配,所以它必須是這樣的:/) – RW24 2014-12-27 15:14:30

+0

@ user1418016問題首先與代碼相關,你的回答沒有任何意義。 – Calvedos 2014-12-27 16:29:08

0

,我的系統上運行的方式是強制數據庫中的Application_Start()

試試這個:

Database.SetInitializer(new CreateDatabaseIfNotExists<EFDbContext>()); 
     var context = new EFDbContext("Data Source=(local);Integrated Security=SSPI;Initial Catalog=myDB;"); 
     context.Database.Initialize(true); 

我覺得種子方法不會被調用,以確保設置brakpoint

您可以開發自定義初始化器,如下所示鏈接:

Seed in entity framework然後在Application_Start()中調用它

Database.SetInitializer<EFDbContext>(new EFDbInitializer()); 
相關問題