我看过这样的一些问题,但似乎没有人回答我的问题 - 最常见的回答似乎是'延迟加载 - 当你试图访问它们时会创建数据库/表'在这种情况下我是:
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
谢谢!
答案 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。
最后,它抱怨说我没有无参数构造函数。所以我必须在我的学生模型中添加一个空构造函数。
最后 - 一切正常(是的)