1

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

  1. 创建 3 个类:专辑、流派、艺术家
  2. 创建名为 MusicStoreDB 的 DBContext 类
  3. 创建一个控制器,称为商店经理。

在脚手架选项中,我使用带有读/写操作和视图的 MVC 控制器,使用实体框架

我还设置了一个 Initializer 以始终在应用程序启动时重新创建数据库

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

2 回答 2

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到目前为止,我已将我的默认设置保留下来,并毫不费力地部署到 Azure。

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

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

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

于 2013-09-24T05:56:45.990 回答
0

所以我今天遇到了同样的问题,事实证明我认为 EF 会自动检查应用程序启动时是否存在该数据库;至少可以说我的希望是雄心勃勃的。

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

对于音乐商店示例,如果您正在关注这本书,请导航到(当然使用您自己的端口号)“ http://localhost:34295/StoreManager ”,如果您一直在关注这本书,该控制器的操作应该实例化 DBContext。

希望这对像我一样迷路的人有所帮助!

于 2016-12-07T19:21:52.053 回答