分配私有财产值

时间:2015-05-12 14:33:38

标签: petapoco

我正在测试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"

1 个答案:

答案 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