c# - 当模型超出使用范围时实际发生了什么?

标签 c# asp.net sql-server scope

我正在使用 block 实现数据库模型,以免混淆处理和任何相关的非托管资源需求,但我想知道(基本上)什么时候发生数据库模型不再使用 block 作用域。问题不是关于处理内存(我知道,它会自动为我们完成)。关于SQL 连接 和相关实例的问题。

所以,这是一个简单的 (ActionResult) 示例:

Account account;
using(AccountsModel accountModel = new AccountsModel())
{
    account = accountsModel.Accounts.FirstOrDefault(x=> x.Username == username);
    if(account == null) return;

    account.Name = name;
    accountsModel.SaveChanges();
}

ViewBag.Name = account.Name; // Is it safe?
return View();

问题是:“在模型的使用范围之外访问 Account 类实例(由 AccountsModel 提供)是否安全?”

注意:我知道,我不能/无法对超出范围的表执行任何更新。

最佳答案

只要 AccountsModeldispose 调用不做任何破坏它的事情,那么继续访问模型创建的对象应该没有问题。

因此,它实际上更多地取决于dispose

的实现

关于c# - 当模型超出使用范围时实际发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443812/

相关文章:

asp.net - 自定义 ASP.NET 容器控件

mysql - SQL group by 按列分组内的自定义分组集

c# - 如何在 Resharper 4.5 中使用 bdd 命名风格?

c# - 为什么提取接口(interface)后可以替换底层实现?

c# - 使用 Interop 传递 SharePoint 凭据以访问 Excel 文件?

sql - 在更新语句中使用表值函数

sql-server - 无法使用 Jmeter 创建类 'com.microsoft.sqlserver.jdbc.SQLServerDriver' 的 JDBC 驱动程序

c# - 如何在不区分大小写的情况下检查 Hunspell 中的拼写

c# - 在Web Garden Mode下,除opera之外的所有主流浏览器如何维护进程Id?

c# - ASP.NET:更改隐藏代码中的 CSS 链接 href?