我正在尝试使用变量创建一个简单的类,我可以将数据分配给LINQ来更新数据库。
我的班级看起来像这样:
Public Class GoalDetails
Inherits System.Object
Public Id As Integer
Public GoalTime As Integer
Public Scorer As String
Public HomeAway As String
End Class
我分配变量然后插入的代码是:
Dim goalsToDb = New GoalDetails()
goalsToDb.Id = 1
goalsToDb.GoalTime = 87
goalsToDb.Scorer = "W Rooney"
goalsToDb.HomeAway = "Home"
db.Goals.InsertOnSubmit(goalsToDb)
db.SubmitChanges()
我收到消息“类型'目标详情'的价值'无法转换为'目标'。
我使用与第三方DLL中的另一个类相同的代码并且它可以工作,但当然我看不到该类的代码,看它与我的不同。
答案 0 :(得分:1)
这是一种静态类型语言。即使两种类型在概念上相似,它们仍然是完全不同的类型。你不能互换使用它们。
此属性:
db.Goals
是给定类型的集合。 (可能命名为Goal
?)您只能将该类型的项添加到该集合中。像这样:
Dim goalsToDb = New Goal() ' or whatever the type is called, you'd have to confirm
goalsToDb.Id = 1
goalsToDb.GoalTime = 87
goalsToDb.Scorer = "W Rooney"
goalsToDb.HomeAway = "Home"
db.Goals.InsertOnSubmit(goalsToDb)
db.SubmitChanges()
您可以创建自定义类来保存应用程序中的数据。但是在使用数据访问框架生成的代码(实体框架?LINQ to SQL?)时,您必须使用该框架生成的类型。因此,如果您在整个应用程序中使用自定义类,那么在与数据库交互时,您需要将其值转换为数据库类。
答案 1 :(得分:1)
你似乎混淆了Goal和GoalDetails这两种类型。您不能使用db.Goals.InsertOnSubmit()在GoalDetails表中插入数据。为了做到这一点,你需要提出像db。 GoalDetails .InsertOnSubmit()这样的东西,它将获取GoalDetails的对象并插入到GoalDetails表中。
另外,如果你想从第三方DLL看到一个类,你可以使用像ILSpy这样的IL反汇编程序