PetaPoco에서 생성 된 Database.cs 코드는 4.0.3 버전입니다. 코드 아래 참조 : PetaPoco GetInstance()는 항상 새 인스턴스를 반환합니까?
public partial class postgresqlDB : Database
{
public postgresqlDB()
: base("postgresql")
{
CommonConstruct();
}
public postgresqlDB(string connectionStringName)
: base(connectionStringName)
{
CommonConstruct();
}
partial void CommonConstruct();
public interface IFactory
{
postgresqlDB GetInstance();
}
public static IFactory Factory { get; set; }
public static postgresqlDB GetInstance()
{
if (_instance!=null)
return _instance;
if (Factory!=null)
return Factory.GetInstance();
else
return new postgresqlDB();
}
[ThreadStatic] static postgresqlDB _instance;
public override void OnBeginTransaction()
{
if (_instance==null)
_instance=this;
}
public override void OnEndTransaction()
{
if (_instance==this)
_instance=null;
}
.....
..... <snip />
는
GetInstance()
기능을 살펴보면, 이유는
return new postgresqlDB()
는 전용 변수
_instance
에 할당되지 않습니다이다?
if (_instance != null) return _instance;
이 사실이 아니기 때문에 GetInstance()
을 호출 할 때마다 항상 새로운 인스턴스가 만들어집니다.
도움 주셔서 감사합니다.
CommonConstruct() 코드가 있습니까? 나는 거기에 변수를 설정할 수도 있다고 가정합니다. –
TT 템플릿을 통해 PetaPoco에 의해 생성 된 코드입니다. 상자 밖에서 이것이 전부입니다. 나는 왜 생성 된 코드에서'_instance'에 대한 할당이 없는지 궁금합니다. – Spongebob