【发布时间】:2015-10-05 06:50:49
【问题描述】:
我正在使用块来实现 db 模型,以免混淆 disposing 和任何相关的非托管资源要求,但我想知道(基本上)当db 模型不再使用块范围。问题不在于 disposing 或 memory(我知道,它会自动为我们完成)。关于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 提供)是否安全?”
注意:我知道,我不能/不能对超出范围的表执行任何更新。
【问题讨论】:
-
Dispose 方法被调用。里面发生了什么
-
@M.kazemAkhgary "问题不是关于处理或内存,而是关于 SQL 连接和相关实例"
-
如果你重写 Dispose 方法并且什么都不放,那么什么也不会发生。
using将调用 Dispose。就这样。你可以在 Dispose 中做数学。玩个游戏。任何东西! -
我没有覆盖/重载
Dispose方法,这就是我要问的原因。
标签: c# asp.net sql-server scope