2015-08-28 145 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

我评论了构造函数的两个参数,它工作。非常感谢你。 –