2014-02-17 7 views
1

Visual Studio 2013Entity Framework -Update-Database- не создает базу данных

Я пытаюсь изучить asp.net MVC в PluralSight. Я создал проект (DLL) под названием eManagr.Domain со следующими классами: отдел/сотрудник/IDepartmentDatasource

Department.cs

public class Department 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual ICollection<Employee> Employees { get; set; } 
} 

Employee.cs

public class Employee 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
} 

IDepartmentDataSource

public interface IDepartmentDataSource 
{ 
    IQueryable<Employee> Employees { get; } 
    IQueryable<Department> Departments { get; } 
} 

Я создал папку инфраструктуры со следующим файлом: DepartmentDb.cs

public class DepartmentDb : DbContext, IDepartmentDataSource 
{ 
    public DbSet<Employee> Employees {get; set;} 
    public DbSet<Department> Departments {get; set;} 

    IQueryable<Employee> IDepartmentDataSource.Employees 
    { 
     get { return Employees; } 
    } 

    IQueryable<Department> IDepartmentDataSource.Departments 
    { 
     get { return Departments; } 
    } 
} 

Затем я создал еще один проект с использованием MVC 4 под названием eManager.Web с интернет-шаблона при создании проекта.

При запуске Enable-миграции это говорит, что есть два [eWeb.Domain, eWeb.Model.Users], который затем я говорю, что Enable-мигрантах с помощью следующей команды:

Enable-Migration -ContextTypeName DepartmentDb

, который создает папку миграции и файл с именем Configurations.cs

public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

    protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context) 
    { 
     context.Departments.AddOrUpdate(t => t.Name, 
      new Department() { Name="Engineering"}, 
      new Department() { Name = "Sales" }, 
      new Department() { Name = "Shipping" }, 
      new Department() { Name = "HR" } 
      ); 
    } 

EDIT - Строка подключения из Web.Config -

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-eManager.Web-20140216202751;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-eManager.Web-20140216202751.mdf" providerName="System.Data.SqlClient" /> 

Когда я запускаю следующий я получаю следующее réponse: PM> обновление базы данных- Укажите «-Verbose» флаг для просмотра заявления SQL в применении к целевой базе данных. Отсутствие ожидающих миграции на основе кода. Метод бегущего семени. PM>

После этого я предполагаю увидеть файл базы данных в своем App_Data, но его не существует, и когда я использую Обозреватель объектов SQL Server, база данных не создается, хотя это то, что я пытаюсь сделать ,

ответ

4

Не могли бы вы предоставить строку соединения из Web.config? Кроме того, есть ли соединение данных (Server Explorer -> Data Connections) так же, как ваше соединение String?

Я думаю, добавив параметр меньше конструктор для вашего DepartmentDb контекста класса может решить вашу проблему

public DepartmentDb() 
     : base("name=DefaultConnection") 

Где имя = DefaultConnection должно быть ваше имя соединения строки

+0

Спасибо .. Я ударил головой, и все было просто. То, что я делаю, основывается на учебнике, которым я следую, и человек делает это, у него не было строки подключения в своем классе, но он работал над его экземпляром. – barakisbrown

0

Я заметил, что вы включили ваш миграция правильно, запустите: add-migration «дайте ему имя»? Как только это будет завершено, вы увидите новый файл в папке миграции. вы не сможете обновить базу данных, не создавая новую миграцию.

0

Я просто столкнулся с чем-то очень похожим. Я столкнулся с этим, когда я шел через следующий ASP.NET MVC учебник: https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

В моем случае проблема казалось быть, что я уже имел таблицы базы данных с таким именем. Я прошел через учебник частично раньше месяца назад, но был прерван и должен был прерваться. Несмотря на то, что я удалил весь проект, казалось, что имя таблицы базы данных, возможно, было сохранено.

Я говорю, казалось, потому что проблема исчезла с помощью следующего решения: после второго удаления проекта я тщательно заменил Contoso на ContosoUniversity в каждой соответствующей ситуации.

Перед тем, как проблема была решена, я неоднократно получал ошибку (0x80131904) в консоли диспетчера пакетов при попытке обновления базы данных и уведомление о невозможности подключения файла mdf к базе данных. Однако, когда я проверил соответствующий каталог, файл mdf даже не был создан.

FYI Для начинающих MVC-пользователей в Visual Studio 2012, я рекомендую пройти следующий учебник MVC до вышеприведенного. https://www.asp.net/mvc/overview/older-versions/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4 Версия Visual Studio 2013 MVC5 также доступна по этой ссылке. Учебник первого абзаца делает несколько переходов ...

Я не мог отладить проблему, если бы начал с учебника EF5 в качестве своего первого проекта MVC.

Смежные вопросы