2015-08-28 131 views
0

我使用代碼優先EF和新框架。我正在嘗試使用Database.SetInitializer創建數據庫,但它看起來像我需要SQL Server Express。但是我必須在SQL Server 2014中創建數據庫。如何做到這一點?在SQL Server中使用代碼優先實體框架創建數據庫

任何人可以從它具有以下類EF-的DbContext書的例子來解釋。

public class BreakAwayContext : DbContext 
{ 
    public DbSet<Destination> Destinations { get; set; } 
    public DbSet<Lodging> Lodgings { get; set; } 
    public DbSet<Trip> Trips { get; set; } 
    public DbSet<Person> People { get; set; } 
    public DbSet<Reservation> Reservations { get; set; } 
    public DbSet<Payment> Payments { get; set; } 
    public DbSet<Activity> Activities { get; set; } 
} 
class Program 
{ 


static void Main(string[] args) 
{ 
    Database.SetInitializer(new InitializeBagaDatabaseWithSeedData()); 
    try 
    { 
     using (var context = new BreakAwayContext()) 
     { 
      foreach (var destination in context.Destinations) 
       Console.WriteLine(destination.Name); 
     } 
    } 
    catch(Exception ex){ 

     Console.WriteLine(ex.ToString()); 
    } 
    Console.Read(); 
} 
} 

public class InitializeBagaDatabaseWithSeedData : DropCreateDatabaseAlways<BreakAwayContext> 
    { 
    protected override void Seed(BreakAwayContext context) 
    { 
     context.Destinations.Add(new Destination 
     { 
     Name = "Hawaii", 
     Country = "USA", 
     Description = "Sunshine, beaches and fun." 
     }); 

     context.Destinations.Add(new Destination 
     { 
     Name = "Wine Glass Bay", 
     Country = "Australia", 
     Description = "Picturesque sandy beaches." 
     }); 
} 
+0

沒問題,只要改變你的連接字符串在上下文構造函數中。如果您使用的是像DropCreateDatabase這樣的初始化程序...您需要確保您有權這樣做。否則,您可以在management studio中創建初始數據庫,使用初始化程序(如MigrateDatabaseToLatestVersion)並將連接字符串指向新數據庫。 –

+0

我正在使用從DropCreateDatabaseAlways繼承的類進行初始化。我不知道如何在這種情況下使用連接字符串。目前我沒有連接字符串。當我沒有連接字符串時,我認爲使用了默認值。但是我不能在我的情況下使用默認值。謝謝。 –

回答

0

設置在構造函數連接字符串:

public class BreakAwayContext : DbContext 
{ 
    public BreakAwayContext() 
     : base("MyConnectionString", throwIfV1Schema: false) 
    { 
    } 
... 

然後設置在web.config中或app.config中的連接字符串:

<connectionStrings> 
    <add name="MyConnectionString" connectionString="Data Source=servername;Initial Catalog=dbname;..." providerName="System.Data.SqlClient" /> 
+0

我已經添加了連接字符串。但類ApplicationDbContext和IdentityDbContext 對我來說並不清楚。我已經更新了這個問題。你能否在這方面解釋我。謝謝。 –

+0

除非您使用Asp.Net身份,否則不要擔心IdentityDbContext。 ApplicationDbContext等同於您的BreakawayContext。我將編輯你的名字的答案。所以基本上,只需添加構造函數,以便它指向配置文件中的連接字符串。 –

+0

我評論了構造函數的兩個參數,它工作。非常感謝你。 –

相關問題