ObjectDataSourceDisposingEventArgs.ObjectInstance Eigenschap

Definitie

Hiermee haalt u een object op dat het bedrijfsobject vertegenwoordigt waarmee het ObjectDataSource besturingselement gegevensbewerkingen uitvoert.

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

Waarde van eigenschap

Het bedrijfsobject dat wordt ObjectDataSource gebruikt voor gegevensbewerkingen; anders, nullals null dit wordt doorgegeven aan de ObjectDataSourceEventArgs.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u een ObjectDataSource besturingselement gebruikt met een bedrijfsobject en een GridView besturingselement om informatie weer te geven. U kunt werken met een zakelijk object dat erg duur is (qua tijd of resources) om te maken voor elke gegevensbewerking die uw webpagina uitvoert. Een manier om met een duur object te werken, kan zijn om één keer een exemplaar van het object te maken en het vervolgens in de cache te plaatsen voor volgende bewerkingen in plaats van het te maken en te vernietigen voor elke gegevensbewerking. In dit voorbeeld ziet u dit patroon. U kunt de ObjectCreating gebeurtenis afhandelen om eerst de cache voor een object te controleren en vervolgens een exemplaar te maken, alleen als er nog geen exemplaar in de cache is opgeslagen. Voer vervolgens de gebeurtenis af om het bedrijfsobject in de ObjectDisposing cache te plaatsen voor toekomstig gebruik, in plaats van het te vernietigen. In dit voorbeeld is de CancelEventArgs.Cancel eigenschap van de ObjectDataSourceDisposingEventArgs klasse ingesteld op true, om de ObjectDataSource instantie niet aan te roepen Dispose .

<%@ 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>

Opmerkingen

Als de methoden voor gegevensbewerkingen (SelectMethod, UpdateMethod, DeleteMethoden InsertMethod) exemplaarmethoden zijn, wordt er een exemplaar van het bedrijfsobject gemaakt voordat de methode wordt uitgevoerd. U kunt voorkomen dat het zakelijke object voor elke aanroep wordt gemaakt door het object op te slaan in de ObjectInstance eigenschap in de ObjectDisposing gebeurtenis-handler. In volgende ObjectCreating gebeurtenissen kunt u het bedrijfsobject ophalen uit de ObjectInstance eigenschap.

Van toepassing op

Zie ook