Vb.net Visual Studio 2019错误 ;BC30311和#x9;类型为'的值;车辆制造商';无法转换为';VehicleContext';

Vb.net Visual Studio 2019错误 ;BC30311和#x9;类型为'的值;车辆制造商';无法转换为';VehicleContext';,vb.net,entity-framework,visual-studio-2019,Vb.net,Entity Framework,Visual Studio 2019,我有一个项目与VB和实体框架。我被困在这里了。有人能帮我吗?我不知道怎么解决这个问题。我遵循教程,但教程使用.cshtml,我使用.vbhtml 我被困在这里两个小时,找不到解决办法。微软在线帮助是无用的,找不到任何好的帮助我的东西 谢谢你的帮助 Mono是我项目的名称 VehicleModel.vb Imports System.ComponentModel.DataAnnotations.Schema Namespace Vehicle.Models Public Class Ve

我有一个项目与VB和实体框架。我被困在这里了。有人能帮我吗?我不知道怎么解决这个问题。我遵循教程,但教程使用.cshtml,我使用.vbhtml

我被困在这里两个小时,找不到解决办法。微软在线帮助是无用的,找不到任何好的帮助我的东西

谢谢你的帮助

Mono是我项目的名称

VehicleModel.vb

Imports System.ComponentModel.DataAnnotations.Schema

Namespace Vehicle.Models
    Public Class VehicleModel
        <DatabaseGenerated(DatabaseGeneratedOption.None)>
        Public Property Id As Integer
        Public Property MakeId As Integer
        Public Property Name As String
        Public Property Abrv As String
        Public Overridable Property VehicleMake As ICollection(Of VehicleMake)
    End Class
End Namespace
VehicleContext.vb

Imports System.Data.Entity
Imports System.Data.Entity.ModelConfiguration.Conventions

Namespace Vehicle.DAL
    Public Class VehicleContext
        Inherits DbContext

        Public Sub New()
            MyBase.New("VehicleContext")
        End Sub

        Public Property VehicleMake As DbSet(Of VehicleContext)
        Public Property VehicleModel As DbSet(Of VehicleContext)
    End Class
End Namespace

VehicleMake.vb

Imports System
Imports System.Collections.Generic

Namespace Vehicle.Models
    Public Class VehicleMake
        Public Property Id As Integer
        Public Property Name As String
        Public Property Abrv As String
        Public Overridable Property VehicleModel As ICollection(Of VehicleModel)
    End Class
End Namespace


乍一看,代码中似乎有许多问题

在这里:

Dim VehicleMake=New List(Of VehicleMake)From{…
您正在创建一个与您的类同名的列表
VehicleMake
。这非常混乱,我建议将其命名为其他名称(
VehicleMake

但无论如何,稍后当您访问此处的列表时:
vehicleMake.ForEach(Sub(s)context.vehicleMake.Add(s))
您正在访问类
VehicleContext
中名为
VehicleMake
的属性。同样,您正在访问类中的属性,并且该属性的名称与您创建的类相同。但是,您的属性
VehicleMake
实际上不是
VehicleMake的对象,这是al我很困惑

您的属性的
Add
方法
VehicleMake
需要类型为
VehicleContext
的参数(因为它定义为
公共属性VehicleMake as DbSet(属于VehicleContext)
).但是,您可以从您的列表中为它提供一个名为
VehicleMake
VehicleMake
的实例


您之所以会出现此错误,是因为
VehicleMake
是在预期的
VehicleContext
位置给出的。并且
VehicleMake
不是从
VehicleContext
继承的。因此,它无法转换为它。

在哪一行您会出现此错误?在VehicleInitializer.vb的这一行:VehicleMake.ForEach(Sub)context.VehicleMake.Add(s))和此行:VehicleMake.ForEach(Sub(s)context.VehicleMake.Add(s))
Imports System
Imports System.Collections.Generic

Namespace Vehicle.Models
    Public Class VehicleMake
        Public Property Id As Integer
        Public Property Name As String
        Public Property Abrv As String
        Public Overridable Property VehicleModel As ICollection(Of VehicleModel)
    End Class
End Namespace