在代码优先方法中没有创建数据库

时间:2016-02-06 17:18:54

标签: asp.net-mvc vb.net

我看过这样的一些问题,但似乎没有人回答我的问题 - 最常见的回答似乎是'延迟加载 - 当你试图访问它们时会创建数据库/表'在这种情况下我是:

        Dim students As List(Of Student) = db.Students.ToList

以上是抛出错误,因为student表为空/ null。

这是我(非常简单)的SchoolContext:

Imports System.Data.Entity

Public Class SchoolContext
Inherits DbContext

Public Students As DbSet(Of Student)

End Class

这是我的SchoolInitialiser课程:

Imports System.Data.Entity

Public Class SchoolInitializer
Inherits DropCreateDatabaseAlways(Of SchoolContext)


Protected Overrides Sub Seed(context As SchoolContext)
    Dim students As List(Of Student) = New List(Of Student) From {
    New Student("Jessica", "Jones"),
    New Student("Chuck", "Norris"),
    New Student("Rambo", "John")
    }

    For Each student In students
        context.Students.Add(student)
    Next

    context.SaveChanges()

End Sub
End Class

我在web.config中的连接字符串:

<add name="SchoolContext" connectionString="Data Source=    (LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\school.mdf;Initial Catalog=aspnet-WebApplication1-20160205092922;Integrated Security=True" providerName="System.Data.SqlClient" />

最后是我调用SetInitialize函数的global.asax

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

Public Class MvcApplication
Inherits System.Web.HttpApplication

Protected Sub Application_Start()
    Database.SetInitializer(New SchoolInitializer)
    AreaRegistration.RegisterAllAreas()
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
    RouteConfig.RegisterRoutes(RouteTable.Routes)
    BundleConfig.RegisterBundles(BundleTable.Bundles)
End Sub
End Class

我的AppData文件夹中似乎没有创建数据库,据我所知,一切都设置好了吗?有什么建议吗?

我遵循以下教程:https://www.youtube.com/watch?v=VAtVv1Q7ufM

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我想出了这个,以防任何人遇到类似的问题。我正在使用VB,所以我想象有些东西在c#的翻译中丢失了。

实际上有一些问题。第一个是StudentContext类需要表的属性,而不是全局变量:

'NOT Public Students As DbSet(Of Student)
Public Property Students() As DbSet(Of Student)

在此之后,错误更容易弄清楚。第二个错误是由于我的学生模型上没有键,所以我添加了这个:

<Key()>
Public Property _StudentID As Integer

属性和全局变量。接下来,由于某种原因它没有连接到数据库,所以我不得不下载并安装localDB。

最后,它抱怨说我没有无参数构造函数。所以我必须在我的学生模型中添加一个空构造函数。

最后 - 一切正常(是的)