2013-10-03 64 views
0

這個特殊的應用程序是一套許多小型實用程序,做一個不太可能相互重疊的特定工作。ASP.NET MVC中每個動作調用中的單例實例或實例?

所以每個實用工具都有自己的類和自己的方法。每個工具類都有兩個以上的控制器操作。在每一個動作我創建一個工具類這樣的新實例:

一個實用工具類的
public PartialViewResult NullifiedInvoicesFix_List(string id) 
{ 
    var _obj = new BgNullifiedInvoicesFix(string.Format(ConfigurationManager.ConnectionStrings["ENTERBG"].ConnectionString, "CRPDTA")); 
    ViewBag.F4211 = _obj.GetF4211List(); 
    return PartialView(); 
} 
public PartialViewResult NullifiedInvoicesFix_Step1() 
{ 
    var _obj = new BgNullifiedInvoicesFix(string.Format(ConfigurationManager.ConnectionStrings["ENTERBG"].ConnectionString, "CRPDTA")); 
    _obj.UpdateF74G4111(); 
    _obj.UpdateF4211(); 
    ViewBag.F4211Count = _obj.CountF4211(); 
    ViewBag.F74G4111Count = _obj.CountF74G4111(); 
    return PartialView(); 
} 

段:

public class BgNullifiedInvoicesFix 
    { 
     private IDbConnection _db; 

     public BgNullifiedInvoicesFix(string serverConnection) 
     { 
      _db = new OleDbConnection(serverConnection); 
     } 
     public dynamic GetF4211List() 
     { 
      return this._db.Query<dynamic>(AppConstants.BG.NullifiedInvoicesFix.SelectF4211); 
     } 
} 

它是確定的,如果我在每次調用動作得到一個新的實例?

垃圾收集器是否照顧這些,或者我應該在每個實用程序類中使用單例實現?

回答

1

如果我在每個調用操作中都得到一個新實例,可以嗎?

是。

垃圾收集器照顧這些,或我應該去 在每個實用類的單身實施?

GC負責處理超出範圍的所有事情。所以你不必擔心它。

+0

謝謝!所以我現在唯一要做的就是在實用程序類中實現DI,以防萬一DAPPER在未來發生不良事件。正確? – e4rthdog

+1

是的,DI會削弱應用程序不同層之間的耦合。這反過來會使它們更加可重用,並讓您可以更輕鬆地替換另一個圖層。 –