PetaPoco를 사용하여 ASP.NET 웹 양식 프로젝트 용 DAL 레이어를 생성하려고합니다.DAL 레이어에서 PetaPoco를 사용하는 올바른 방법 (ASP.NET Web Forms VB.NET)
Namespace Eva.Dal.Polls
Public Partial Class EVAMOD_PL_CategoryDb
Private db As Eva.Dal.Core.EvaDb
Public Function Insert(a As EVAMOD_PL_Category) As Object
Return db.Insert(a)
End Function
Public Sub New()
db = New Eva.Dal.Core.EvaDb
End Sub
End Class
Public Partial Class EVAMOD_PL_GL_CategoryDb
Private db As Eva.Dal.Core.EvaDb
Public Function Insert(a As EVAMOD_PL_GL_Category) As Object
Return db.Insert(a)
End Function
Public Sub New()
db = New Eva.Dal.Core.EvaDb
End Sub
End Class
End Namespace
특히 DB를 여는 방법에 관심이 있습니다. PetaPoco 사이트에서 는
// Create a PetaPoco database
objectvar db=new PetaPoco.Database("connectionStringName");
// Show all articles
foreach (var a in db.Query<article>("SELECT * FROM articles")){
Console.WriteLine("{0} - {1}", a.article_id, a.title);
}
는하지만 PetaPoco와 함께 제공되는 T4 발생기에 좋은 섹션 느릅 나무 모든 DTO들과 함께,가,
같은 것을 생성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
.......
End Class
End Class
End Namespace
그래서 느릅 나무는 IS 예제가있다 내 DB 개체를 만들고 PetaPoco로 DAL 계층에서 사용하는 올바른 방법?
또한 PetaPoco를 사용하여 연결을 열린 상태로 유지하고 재사용 할 수있는 방법이 있다는 것을 읽었습니다. BLL/DAL 아키텍처에서는 실현 불가능할 것입니다. 예를 들어 BLL에서 2-3 번 작업을하면 DB에 액세스 할 수 있습니다. ? 아니면 그렇다면 제대로 처리해야합니까? 연결을 열고 모든 2-3 작업을 수행하는 DAL 메서드를 만드는 중입니까? BLL에서 연결을 열면 안됩니다.
public class DatabaseCreator
public shared function GetContext() As EvaDb
return new EvaDb(ConfigurationManager.ConnectionStrings("X").ConnectionString)
end sub
end class
나는 데이터베이스 연결은 당신이 수행하는 즉시 작업에 더 이상 열 유지하지,하지만 그것을 떠나지 않을 것입니다 : 사전에
감사
나는 항상 랩퍼를 작성
매우 감사합니다. – Manight
PetaPoco T4가 PetaPoco Database 클래스에서 상속받은 파생 클래스를 만들고 기본 클래스의 메서드를 복제하는 Record 클래스를 추가하는 이유는 아직도 btw를 이해하지 못합니다. 우리는 기본 PetaPoco Database 클래스를 인스턴스화 할 수 없었습니까? 중첩 된 Record 클래스가 사용 된 파생 클래스는 무엇입니까? 멍청한 질문에 대해 죄송합니다. – Manight