Asp.net 实体框架不在localdb中创建数据库

Asp.net 实体框架不在localdb中创建数据库,asp.net,sql,entity-framework,asp.net-mvc-4,Asp.net,Sql,Entity Framework,Asp.net Mvc 4,我是MVC新手,现在我正在尝试解决Galloway J和其他人在professional Asp.Net MVC 4中演示的示例,在这个示例中,我必须执行以下操作: 创建3个类:专辑、流派、艺术家 创建名为MusicStoreDB的DBContext类 创建一个名为store manager的控制器 在scaffolding选项中,我使用实体框架将MVC控制器与读/写操作和视图结合使用 我还设置了一个初始值设定项,以便总是在应用程序启动时重新创建数据库 但在运行解决方案时,没有创建数据库,可能会

我是MVC新手,现在我正在尝试解决Galloway J和其他人在professional Asp.Net MVC 4中演示的示例,在这个示例中,我必须执行以下操作:

  • 创建3个类:专辑、流派、艺术家
  • 创建名为MusicStoreDB的DBContext类
  • 创建一个名为store manager的控制器
  • 在scaffolding选项中,我使用实体框架将MVC控制器与读/写操作和视图结合使用

    我还设置了一个初始值设定项,以便总是在应用程序启动时重新创建数据库

    但在运行解决方案时,没有创建数据库,可能会出现什么问题?我尝试了很多建议,甚至重新安装了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
    

    确保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; }
    }
    
    公共类MyNewContext:DbContext
    {
    公共MyNewContext():基(“DefaultConnection”)
    {
    }
    公共数据库集类型{get;set;}
    公共数据库集艺术家{get;set;}
    公共DbSet歌曲{get;set;}
    }
    
    默认情况下,它是
    DefaultConnection
    ,但如果要使用新的连接字符串,请确保已将其更改为
    MusicStoreDB
    。到目前为止,我已经将我的默认设置保留下来,并毫不费力地部署到Azure

    您应该能够在新项目中使用实体框架,而无需设置任何新的连接字符串。它使用SQLExpress“只起作用”

    我敢打赌,如果您连接到SSMS或其他地方的
    (localdb)\v11.0
    ,您一定有一个数据库


    如果您仍然有问题,请发布您的global.asax和DbContext。

    所以我今天遇到了同样的问题,结果是我假设EF会在应用程序启动时自动检查数据库是否存在;至少可以说,我的希望是雄心勃勃的

    一旦调用数据库上下文,如果数据库不存在,EF将只创建该数据库。例如,当您第一次运行应用程序时,如果在登录页上没有实例化DB上下文,则不会发生任何事情

    对于Music Store示例,如果您正在阅读该书,请导航到(当然使用您自己的端口号)”,如果您一直在阅读该书,则该控制器的操作应实例化DBContext


    希望这能帮助像我一样迷路的人

    它对我不起作用,但我已经发布了global.asax和MusicStoreDB类。调试网站时您是否收到错误,或者您只是报告自己找不到数据库?这是有区别的,这在目前是很重要的。请发布一个特定的错误。您刚刚告诉我您使用了错误的连接字符串,因此我认为您也找不到正确的SQL实例。我的SQL server上只有一个实例—默认实例,我找不到SQLEXPRESS实例请确认您所尝试的。您是否将DbContext中的“DefaultConnection”改为“MusicStoreDB”?您是否收到任何错误?你仍然模棱两可。默认情况下,Visual Studio在App_数据文件夹中创建MDF文件并将其附加到LocalDb,但您尚未说明为什么会与此不同。我遇到的唯一错误是,当我导航到/MusicStore时,我收到的是“值不能为null。参数名称:source”