PetaPoco T4中派生的db类用于什么?

时间:2013-01-05 16:13:02

标签: asp.net inheritance data-access-layer nested-class petapoco

我是OOP的新手,所以我自己无法理解这些代码。 用于生成DTO的PetaPoco T4模板,还创建了一个继承自Petapoco基础数据库的派生类,还创建了一个嵌套类并覆盖了各种基本方法。 我在T4文件中调用了我的类EvaDb,所以:

它生成如下内容:

    Namespace Eva.Dal.Core
Public Partial Class EvaDb
    Inherits Database

    Public Sub New() 
        MyBase.New("ConnectionString")
        CommonConstruct()
    End Sub

    Public Sub New(connectionStringName As String)
        MyBase.New(connectionStringName)
        CommonConstruct()
    End Sub

    Private Partial Sub CommonConstruct()
    End Sub

    Public Interface IFactory
        Function GetInstance() As EvaDb
    End Interface

    Public Shared Property Factory() As IFactory
        Get
            Return mFactory
        End Get
        Set
            mFactory = Value
        End Set
    End Property

    Private Shared mFactory As IFactory

    Public Shared Function GetInstance() As EvaDb
        If istance IsNot Nothing Then
            Return istance
        End If

        If Factory IsNot Nothing Then
            Return Factory.GetInstance()
        Else
            Return New EvaDb
        End If
    End Function

    <ThreadStatic> _
    Shared istance As EvaDb

    Public Overrides Sub OnBeginTransaction()
        If istance Is Nothing Then
            istance = Me
        End If
    End Sub

    Public Overrides Sub OnEndTransaction()
        If istance Is Me Then
            istance = Nothing
        End If
    End Sub

    Public Class Record(Of T As New)
        Public Shared ReadOnly Property Repo() As EvaDb
            Get
                Return EvaDb.GetInstance()
            End Get
        End Property
        Public Function IsNew() As Boolean
            Return Repo.IsNew(Me)
        End Function

        ....... all other methods of base database here

    End Class
End Class
End Namespace 

所以现在当我打开数据库时,我会做一些类似“私有数据库作为新的Eva.Dal.Core.EvaDb”但这个新的派生类和从基础创建的区别如“私有数据库为新的PetaPoco.Database” ”。 派生类有什么用?

由于

0 个答案:

没有答案