分配私有 属性 值

Assigning Private Property values

我正在测试 PetaPoco 以确定它是否满足我们的需求。我的印象是它会深入研究我的 class 并查看我标记为有效列的私有属性。不幸的是,它的行为并不像预期的那样。你能不能看一下,如果我做错了什么,请告诉我。

我的测试class:

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"

<PetaPoco.Ignore> 属性指示 PetaPoco 在映射期间忽略该列。因此,属性 Id 将始终返回默认值 0。

如果要防止Id属性被修改,注释我们的或者删除属性,然后在Id[=21]中添加一个privatesetter =] 如以下代码片段所示。

' <PetaPoco.Ignore>
    Public Property Id As Integer
        Get
            Return pvtID
        End Get
        Private Set(value As Integer)
            pvtID = value
        End Set
    End Property