Не удается создать базу данных из Entity Framework 4.1 Codefirst с SQL Server 2005 - PullRequest
1 голос
/ 12 июля 2011

Я пытаюсь создать базу данных из кода структуры сущности. Сначала следуйте этому руководству

http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs

, но вместо этого я использую SQL Server 2005, когда SQLExpress, но при выполнении решения нетчто-нибудь создать.Что не так с моим кодом

Это мой код.

Movie.cs

public class Movie
{
    public int ID { get; set; }
    public string Title { get; set; }
    public DateTime ReleaseDate { get; set; }
    public string Genre { get; set; }
    public decimal Price { get; set; }
}

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
}

И это моя строка подключения в web.config

<add name="MovieDBContext" 
     connectionString="data source=...;Integrated Security=SSPI;initial catalog=MovieDB;User Id=...;Password=..."
     providerName="System.Data.SqlClient" />

Что не так с моим кодом?Почему база данных не была создана.

Спасибо всем, кто помог мне.

Ответы [ 3 ]

3 голосов
/ 12 июля 2011

База данных не создается, пока не будет использована впервые.Для запуска создания базы данных вы должны выполнить любое из следующих действий:

  • Создать экземпляр вашего контекста и получить или сохранить любые данные
  • Создать экземпляр вашего контекста и вызвать context.Database.CreateIfNotExists()
  • Создайте экземпляр вашего контекста и позвоните context.Database.Initialize(false)
  • Создайте экземпляр вашего контекста и позвоните context.Database.Create()
0 голосов
/ 12 июля 2011

Вот мой.Я принудительно инициализирую базу данных, затем отключаю контекст, а затем принудительно заполняю его.Я не мог заставить поведение по умолчанию работать с Oracle и SQL CE.

var initer = new PPContextInitializer();
Database.SetInitializer<MovieDBContext >(new DropCreateDatabaseIfModelChanges<MovieDBContext >());

using (var db = new MovieDBContext())
{
    db.Database.Initialize(true);
}

using (var db1 = new MovieDBContext())
{
    initer.Seed(db1);
}
0 голосов
/ 12 июля 2011

Добавили ли вы инициализировать метид при запуске приложения в файле Global.asax

 Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MovieDBContext>());
...