我正在测试PetaPoco以确定它是否符合我们的需求。我的印象是它会深入研究我的课程并看到我标记为有效列的私有属性。不幸的是,它的表现并不像预期的那样。如果我做错了什么,请你看看,让我知道。
我的测试班:
Imports PetaPoco
<PetaPoco.TableName("PaulTest")>
<PetaPoco.PrimaryKey("ID")>
Public Class PaulTest
<PetaPoco.Column("ID")>
Private Property pvtID As Integer
Private pvtName As String
Private Sub New()
End Sub
Public Sub New(name As String)
If String.IsNullOrEmpty(name) Then
Throw New ArgumentException("Passed Name is empty")
End If
Me.pvtName = name
End Sub
<PetaPoco.Ignore>
Public ReadOnly Property ID As Integer
Get
Return pvtID
End Get
End Property
<PetaPoco.Column("Name")>
Public Property Name As String
Get
Return pvtName
End Get
Set(value As String)
If String.IsNullOrEmpty(value) Then
Throw New ArgumentException("Passed Name is empty")
End If
Me.pvtName = value
End Set
End Property
End Class
对DB的调用(_db是PetaPoco数据库对象)
Return (_db.Fetch(Of Peta.Domain.PaulTest)(";EXEC selAllPaulTest")).OrderBy(Function(PaulTest) (PaulTest.ID)).ToList()
数据库中有什么
ID Name
107 Paul
返回了什么:
PaulTest.ID = 0
PaulTest.pvtID = 0
PaulTest.Name = "Paul"
PaulTest.pvtName = "Paul"
答案 0 :(得分:1)
<PetaPoco.Ignore>
属性指示PetaPoco
在映射期间忽略该列。因此,属性Id
将始终返回默认值0。
如果您想阻止修改Id
属性,请注释我们或删除该属性,并将私有设置器添加到Id
属性,如以下代码段所示。
' <PetaPoco.Ignore>
Public Property Id As Integer
Get
Return pvtID
End Get
Private Set(value As Integer)
pvtID = value
End Set
End Property