【问题标题】:Create database using code first Entity Framework in SQL Server在 SQL Server 中使用代码优先实体框架创建数据库
【发布时间】: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


【解决方案1】:

在构造函数中设置连接字符串:

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" />
</connectionStrings>

【讨论】:

  • 我已经添加了连接字符串。但是我不清楚 ApplicationDbContext 和 IdentityDbContext 类。我已经更新了这个问题。你能在这种情况下解释一下吗。谢谢。
  • 除非您使用 Asp.Net 身份,否则不要担心 IdentityDbContext。 ApplicationDbContext 相当于您的 BreakawayContext。我会编辑你名字的答案。所以基本上,只需添加构造函数,使其指向配置文件中的连接字符串。
  • 我注释了构造函数的两个参数并且它起作用了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多