2013-09-24 8 views
1

Я новичок в MVC, и сейчас я пытаюсь выработать пример, продемонстрированный в профессиональном Asp.Net MVC 4 от Galloway J и других, в этом примере мне нужно сделать следующее:Домен Entity Framework не создает базу данных в localdb

  1. создать 3-х классов: альбом, жанр, исполнитель
  2. создать DbContext класс под названием MusicStoreDB
  3. создать вызов контроллера менеджер магазина он.

в опциях подмостей, которые я использовал MVC контроллер с операции чтения/записи и просмотра, с помощью рамки Entity

Я также установить инициализаторе воссоздать базу данных всегда при запуске приложения

но при запуске решение не создано ни одной базы данных, что может быть проблемой. Я пробовал много предложений, даже переустанавливая SQL Server 2008 R2 и VS 2012, но доза не работает.

это файл global.asax

Imports System.Web.Optimization 
Imports System.Data.Entity 

Public Class MvcApplication 
    Inherits System.Web.HttpApplication 

    Sub Application_Start() 
     AreaRegistration.RegisterAllAreas() 
     Database.SetInitializer(Of MusicStoreDB)(New DropCreateDatabaseAlways(Of MusicStoreDB)()) 
     WebApiConfig.Register(GlobalConfiguration.Configuration) 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters) 
     RouteConfig.RegisterRoutes(RouteTable.Routes) 
     BundleConfig.RegisterBundles(BundleTable.Bundles) 
     AuthConfig.RegisterAuth() 
    End Sub 
End Class 

и класс MusicStoreDB

Imports System.Data.Entity 

Public Class MusicStoreDB 
    Inherits DbContext 

    Public Property Albums() As DbSet(Of Album) 
     Get 
     End Get 
     Set(value As DbSet(Of Album)) 
     End Set 
    End Property 

    Public Property Genres() As DbSet(Of Genre) 
     Get 
     End Get 
     Set(value As DbSet(Of Genre)) 
     End Set 
    End Property 

    Public Property Artists() As DbSet(Of Artist) 
     Get 
     End Get 
     Set(value As DbSet(Of Artist)) 
     End Set 
    End Property 
End Class 

ответ

0

Убедитесь, что DbContext определяет правильную строку подключения:

public class MyNewContext : DbContext 
{ 
    public MyNewContext() : base("DefaultConnection") 
    { 

    } 

    public DbSet<Genre> Genres { get; set; } 
    public DbSet<Artist> Artists { get; set; } 
    public DbSet<Song> Songs { get; set; } 
} 

Это DefaultConnection по по умолчанию, но убедитесь, что вы изменили свой код на MusicStoreDB, если y ou хотите использовать вашу новую строку подключения. Я до сих пор оставил мой по умолчанию и без усилий развернулся к Azure.

Вы должны иметь возможность использовать Entity Framework в новом проекте без настройки каких-либо новых строк подключения. Он «просто работает» с использованием SQL Express.

Я готов поспорить, что у вас есть база данных, если вы подключаетесь к (localdb)\v11.0 в SSMS или в другом месте.

Опубликуйте свой global.asax и DbContext, если у вас по-прежнему возникают проблемы.

+0

Это не сработало для меня, но я опубликовал global.asax и класс MusicStoreDB –

+0

Получена ли ошибка при отладке веб-сайта или вы просто сообщаете, что вы не можете найти базу данных самостоятельно? Есть разница, и это важно на данный момент. Укажите конкретную ошибку.Вы только что показали мне, что используете неправильную строку соединения, поэтому я не думаю, что вы смотрите в подходящем экземпляре SQL. – Guttsy

+0

У меня есть только один экземпляр на моем сервере sql по умолчанию, я не могу найти экземпляр SQLEXPRESS –

0

Итак, сегодня я столкнулся с такой же проблемой, и выяснилось, что я предположил, что EF автоматически проверяет запуск приложения, существует ли эта БД или нет; по крайней мере, моя надежда была способом амбициозной.

EF создаст только БД, если он не существует после вызова контекста БД. Например, при первом запуске приложения, если на целевой странице вы не создаете экземпляр контекста БД, ничего не происходит.

Для примера с музыкальным магазином, если вы следуете книге, перейдите к (используя свой собственный номер порта, конечно) «http://localhost:34295/StoreManager», действие этого контроллера должно создавать экземпляр DBContext, если вы следовали за книгой.

Надеюсь, это поможет любому, кто получил немного потерянный, как я!

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