2013-10-03 33 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会削弱应用程序不同层之间的耦合。这反过来会使它们更加可重用,并让您可以更轻松地替换另一个图层。 –