我是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” ”。 派生类有什么用?
由于