1
我想用EF Code-First将这些类添加到数据库中。填充对象并尝试填充上下文“dbContext.Tracks.Add(t1)”后。我收到错误“无法投射'System.Collections.Generic.HashSet`1 [Vinyl7]'类型的对象键入'Vinyl7'”任何人都可以指出我失踪了什么?无法投射“System.Collections.Generic.HashSet”类型的对象
Public Class Vinyl7
<Key>
Public Overridable Property mediaId As Long
Public Overridable Property parentMediaId As System.Nullable(Of Long)
Public Overridable Property side As String
<ForeignKey("mediaId"), Required>
Public Overridable Property track As Track
End Class
Public Class Track
<Key>
Public Property mediaId As Long
Public Property title As String
Public Overridable Property Vinyl7T As ICollection(Of Vinyl7) = New HashSet(Of Vinyl7)
End Class
这是我的上下文
Public Class MediaRepo : Inherits DbContext
Public Sub New()
MyBase.New("name=MediaDB")
End Sub
Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
End Sub
Public Property Vinyl7s As DbSet(Of Vinyl7)
Public Property Tracks As DbSet(Of Track)
End Class
这是我的方法。
Using db = New MediaRepo
Dim t1 = New Track
t1.title = "Kutchie"
Dim t2 = New Track
t2.title = "Drug Trade"
Dim a = New Media.Vinyl7
a.side = "A"
a.parentMediaId = t1.mediaId
a.track = t1
Dim b = New Media.Vinyl7
b.side = "B"
b.parentMediaId = t1.mediaId
b.track = t2
t1.Vinyl7T.Add(a)
t1.Vinyl7T.Add(b)
db.Tracks.Add(t1)
SaveChanges(db)
End Using
因为我已经更新了,但仍押注错误'code' 公共属性可覆盖的轨道作为轨道 –
ruffone
2013-03-07 04:08:09
我写了一个testapp这就是你的模型工作。也许你可以看到你的代码有什么不同?尝试创建一个控制台应用程序并粘贴我的代码,它会创建数据库并能够插入一些实体 – 2013-03-07 04:12:29
感谢马克,这已经让我有了一种方式'。如果允许我的话。我如何制作我认为Track_trackId和Vinyl7_mediaId之间的一对一关系我希望能够在不添加乙烯基的情况下添加曲目 – ruffone 2013-03-07 08:46:50