ObjectDataSourceDisposingEventArgs.ObjectInstance Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает объект, представляющий бизнес-объект, совместно с которым элемент управления ObjectDataSource выполняет операции с данными.
public:
property System::Object ^ ObjectInstance { System::Object ^ get(); };
public object ObjectInstance { get; }
member this.ObjectInstance : obj
Public ReadOnly Property ObjectInstance As Object
Значение свойства
Бизнес-объект, который используется элементом управления ObjectDataSource для выполнения операций с данными; в противном случае —null
, если значение null
передается элементу управления ObjectDataSourceEventArgs.
Примеры
В следующем примере кода показано, как использовать ObjectDataSource элемент управления с бизнес-объектом и элементом GridView управления для отображения информации. Вы можете работать с бизнес-объектом, который является очень дорогостоящим (с точки зрения времени или ресурсов), чтобы создать для каждой операции с данными, выполняемой веб-страницей. Один из способов работы с ресурсоемким объектом — создать его экземпляр один раз, а затем кэшировать его для последующих операций, а не создавать и уничтожать для каждой операции с данными. В этом примере демонстрируется этот шаблон. Вы можете обработать ObjectCreating событие, чтобы сначала проверка кэш для объекта, а затем создать экземпляр, только если он еще не кэширован. Затем обработайте ObjectDisposing событие, чтобы кэшировать бизнес-объект для использования в будущем, а не уничтожать его. В этом примере свойству CancelEventArgs.CancelObjectDataSourceDisposingEventArgs класса присваивается значение true
, чтобы направить ObjectDataSource объект на отсутствие вызова 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>
Комментарии
Если методы операции с данными (SelectMethod, UpdateMethod, DeleteMethod, и InsertMethod) являются методами экземпляра, экземпляр бизнес-объекта создается перед выполнением метода . Вы можете запретить создание бизнес-объекта для каждого вызова, сохранив объект в свойстве ObjectInstance в обработчике ObjectDisposing событий. В последующих ObjectCreating событиях бизнес-объект можно получить из ObjectInstance свойства .