【发布时间】:2015-08-28 15:39:17
【问题描述】:
我使用的是代码优先 EF 和这个框架的新手。我正在尝试使用Database.SetInitializer 创建一个数据库,但看起来我需要 SQL Server Express。但是我必须在 SQL Server 2014 中创建数据库。如何做到这一点?
任何人都可以用 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."
});
}
【问题讨论】:
-
没问题,只需在上下文构造函数中更改连接字符串即可。如果您使用的是 DropCreateDatabase 之类的初始化程序...您需要确保您有权这样做。否则,您可以在 Management Studio 中创建初始数据库,使用诸如 MigrateDatabaseToLatestVersion 之类的初始化程序并将连接字符串指向新数据库。
-
我正在使用继承自 DropCreateDatabaseAlways 的类进行初始化。我不知道如何在这种情况下使用连接字符串。目前我没有连接字符串。我认为当我没有连接字符串时使用默认值。但在我的情况下我不能使用默认值。谢谢。
标签: entity-framework-6 sql-server-2014