ObjectDataSourceDisposingEventArgs.ObjectInstance Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.