2011-08-13 25 views
12

Petapoco kullanarak bir DAL ve depoları oluşturmam gerekiyor. Gelen zorluk, bağlantılarını nasıl yönettiğini bilmem.petapoco kullanarak DAL oluşturma

Dapper kullanıyor olsaydım, bağlantı sürecinin nasıl aktığını biliyorum çünkü onu kontrol ediyorum. Petapoco ile DAL oluşturmada en iyi uygulamaların ne olduğunu bilmiyorum.

public class UserRepository 
    { 
     public IEnumerable<User> All() 
     { 
      var db = new PetaPoco.Database("Sqlite_Connection");//this line 
      var s = db.Query<User>("SELECT * FROM Users"); 
      return s.ToList(); 
     } 
    } 

ben statik özellik olarak benim DALHelper sınıfında var db = new PetaPoco.Database("Sqlite_Connection");//this line yerleştirmek istiyorum ama bir statik özellik başlatma için iyi olacak ölçeklenebilirlik

cevap

11

gibi hatalar alabilmeniz nedeniyle statik kullanmamanızı öneririm çünkü aynı bağlantı aynı kaynağa erişen farklı istek tarafından kullanılıyor.

İki seçenek:

1. Bir denetleyici taban sınıfta bağlantısı oluşturma

public class BaseController : Controller 
{ 
    protected DatabaseWithMVCMiniProfiler _database; 

    protected override void OnActionExecuting(ActionExecutingContext filterCon) 
    { 
    base.OnActionExecuting(filterCon); 

    _database = new DatabaseWithMVCMiniProfiler("MainConnectionString"); 

    } 
} 

istek başına bir bağlantı oluşturarak 2. Statik yöntem

public static class DbHelper { 
    public static Database CurrentDb() { 
    if (HttpContext.Current.Items["CurrentDb"] == null) { 
     var retval = new DatabaseWithMVCMiniProfiler("MainConnectionString"); 
     HttpContext.Current.Items["CurrentDb"] = retval; 
     return retval; 
    } 
    return (Database)HttpContext.Current.Items["CurrentDb"]; 
    } 
} 
+1

Teşekkürler Eduardo, PetaPoco ile tekrar kendimi daha güvende hissettiriyor, ayrıca sadece bu SO'yı istek başına 1 petapoco.database örneğini kullanma önerisiyle buldu: http://stackoverflow.com/questions/7126205/how-can-integrate-mvcminiprofiler-with- petapoco-değiştirmeden-kaynaklar – joeriks

+1

PetaPoco muhteşem. Şimdi birçok projede kullanıyorum ve her türlü senaryoda çok iyi çalışıyor. –

3

endişeleniyorum. PetaPoco, bir işlem kullanmıyorsanız bağlantıyı her seferinde açıp kapatacaktır. Bu genellikle bağlantı havuzu nedeniyle bir sorun değildir.

Bunu bir web uygulamasında kullanıyorsanız, istek başına bir PetaPoco veritabanı oluşturmalısınız.

+0

ben bu şekilde de kullanıyorum DAL işlemleri arasında iç içe işlem işlemek için üretim ve iyi çalışıyor. – Larry

+0

I (ve diğerleri) statik (her uygulamada olduğu gibi) kullanımının sorun yaşadığını bulmuşlardır. Cevabımı gör. –