我已经阅读了微软的一些教程和视频,内容涉及asp.net 4.5网络表单的增强功能。我注意到的一件事是它们都没有处理datacontext。我想知道新的模型绑定命名空间是否会导致页面自动调用它所拥有的任何datacontex上的dispose,如果视频/教程不完整,或者是否正在进行其他操作?这是wingtip玩具店教程中显示的一些代码的示例。请注意,它没有围绕datacontext的using语句。当页面生命周期结束时它会自动处理吗?
更新
<asp:GridView runat="server" ID="gvMyAccount" OnCallingDataMethods="MyAccount_CallingDataMethods" SelectMethod="GetAll" DeleteMethod="DeleteItem" ItemType="MyAccountHelper" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<%# Container.DataItemIndex+1 %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="AccountCode" HeaderText="Account Id" SortExpression="AccountCode" />
</Columns>
</asp:GridView>
背后的代码
public partial class MyAccounts : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void MyAccount_CallingDataMethods(object sender, CallingDataMethodsEventArgs e)
{
e.DataMethodsObject = new MyAccountBL();
}
}
BL档案
public class MyAccountBL : IDisposable
{
MyModel db = new MyModel();
public IQueryable<MyAccountHelper> GetAll()
{
return db.MyAccounts;
}
private bool disposedValue = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposedValue)
{
if (disposing)
{
db.Dispose();
}
}
this.disposedValue = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}