ObjectDataSourceDisposingEventArgs.ObjectInstance Özellik

Tanım

Denetimin veri işlemleri gerçekleştirdiği iş nesnesini temsil eden ObjectDataSource bir nesnesi alır.

public:
 property System::Object ^ ObjectInstance { System::Object ^ get(); };
public object ObjectInstance { get; }
member this.ObjectInstance : obj
Public ReadOnly Property ObjectInstance As Object

Özellik Değeri

veri işlemleri için kullanılan iş nesnesi ObjectDataSource ; aksi takdirde , nullöğesine geçirilirse nullObjectDataSourceEventArgs.

Örnekler

Aşağıdaki kod örneği, bir denetimin ObjectDataSource bir iş nesnesi ve GridView bir denetimle bilgileri görüntülemek için nasıl kullanılacağını gösterir. Web sayfanızın gerçekleştirdiği her veri işlemi için oluşturmak üzere çok pahalı (zaman veya kaynaklar açısından) bir iş nesnesiyle çalışabilirsiniz. Pahalı bir nesneyle çalışmanın bir yolu, bunun bir örneğini bir kez oluşturmak ve ardından her veri işlemi için oluşturup yok etmek yerine sonraki işlemler için önbelleğe almak olabilir. Bu örnekte bu desen gösterilmektedir. Önce bir nesnenin ObjectCreating önbelleğini denetlemek için olayı işleyebilir ve ardından yalnızca önceden önbelleğe alınmamışsa bir örnek oluşturabilirsiniz. Ardından, iş nesnesini yok etmek yerine gelecekte kullanmak üzere önbelleğe almak için olayı işleyin ObjectDisposing . Bu örnekte sınıfının özelliğiObjectDataSourceDisposingEventArgs, CancelEventArgs.Cancel örneğinde çağrılmayacak Dispose şekilde trueyönlendirmek ObjectDataSource için olarak ayarlanmıştır.

<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

// Instead of creating and destroying the business object each time, the 
// business object is cached in the ASP.NET Cache.
private void GetEmployeeLogic(object sender, ObjectDataSourceEventArgs e)
{
    // First check to see if an instance of this object already exists in the Cache.
    EmployeeLogic cachedLogic;
    
    cachedLogic = Cache["ExpensiveEmployeeLogicObject"] as EmployeeLogic;
    
    if (null == cachedLogic) {
            cachedLogic = new EmployeeLogic();            
    }
        
    e.ObjectInstance = cachedLogic;     
}

private void ReturnEmployeeLogic(object sender, ObjectDataSourceDisposingEventArgs e)
{    
    // Get the instance of the business object that the ObjectDataSource is working with.
    EmployeeLogic cachedLogic = e.ObjectInstance as EmployeeLogic;        
    
    // Test to determine whether the object already exists in the cache.
    EmployeeLogic temp = Cache["ExpensiveEmployeeLogicObject"] as EmployeeLogic;
    
    if (null == temp) {
        // If it does not yet exist in the Cache, add it.
        Cache.Insert("ExpensiveEmployeeLogicObject", cachedLogic);
    }
    
    // Cancel the event, so that the object will 
    // not be Disposed if it implements IDisposable.
    e.Cancel = true;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"          
          datasourceid="ObjectDataSource1">
        </asp:gridview>

        <asp:objectdatasource 
          id="ObjectDataSource1"
          runat="server"          
          selectmethod="GetCreateTime"          
          typename="Samples.AspNet.CS.EmployeeLogic"
          onobjectcreating="GetEmployeeLogic"
          onobjectdisposing="ReturnEmployeeLogic" >
        </asp:objectdatasource>        

    </form>
  </body>
</html>
<%@ Import namespace="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

' Instead of creating and destroying the business object each time, the 
' business object is cached in the ASP.NET Cache.
Sub GetEmployeeLogic(sender As Object, e As ObjectDataSourceEventArgs)

    ' First check to see if an instance of this object already exists in the Cache.
    Dim cachedLogic As EmployeeLogic 
    
    cachedLogic = CType( Cache("ExpensiveEmployeeLogicObject"), EmployeeLogic)
    
    If (cachedLogic Is Nothing) Then
            cachedLogic = New EmployeeLogic            
    End If
        
    e.ObjectInstance = cachedLogic
    
End Sub ' GetEmployeeLogic

Sub ReturnEmployeeLogic(sender As Object, e As ObjectDataSourceDisposingEventArgs)
    
    ' Get the instance of the business object that the ObjectDataSource is working with.
    Dim cachedLogic  As EmployeeLogic  
    cachedLogic = CType( e.ObjectInstance, EmployeeLogic)
    
    ' Test to determine whether the object already exists in the cache.
    Dim temp As EmployeeLogic 
    temp = CType( Cache("ExpensiveEmployeeLogicObject"), EmployeeLogic)
    
    If (temp Is Nothing) Then
        ' If it does not yet exist in the Cache, add it.
        Cache.Insert("ExpensiveEmployeeLogicObject", cachedLogic)
    End If
    
    ' Cancel the event, so that the object will 
    ' not be Disposed if it implements IDisposable.
    e.Cancel = True
End Sub ' ReturnEmployeeLogic
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - VB Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"          
          datasourceid="ObjectDataSource1">
        </asp:gridview>

        <asp:objectdatasource 
          id="ObjectDataSource1"
          runat="server"          
          selectmethod="GetCreateTime"          
          typename="Samples.AspNet.VB.EmployeeLogic"
          onobjectcreating="GetEmployeeLogic"
          onobjectdisposing="ReturnEmployeeLogic" >
        </asp:objectdatasource>        

    </form>
  </body>
</html>

Açıklamalar

Veri işlemi yöntemleri (SelectMethod, UpdateMethod, DeleteMethodve InsertMethod) örnek yöntemleriyse, yöntem yürütülmeden önce iş nesnesinin bir örneği oluşturulur. nesnesini olay işleyicisinde özelliğine kaydederek iş nesnesinin ObjectInstance her çağrı için oluşturulmasını ObjectDisposing engelleyebilirsiniz. Sonraki ObjectCreating olaylarda, özelliğinden ObjectInstance iş nesnesini alabilirsiniz.

Şunlara uygulanır

Ayrıca bkz.