如何创建一个用于LINQ的类?

时间:2015-11-16 16:00:17

标签: asp.net vb.net linq

我正在尝试使用变量创建一个简单的类,我可以将数据分配给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中的另一个类相同的代码并且它可以工作,但当然我看不到该类的代码,看它与我的不同。

2 个答案:

答案 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反汇编程序