Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当模型超出使用范围时,实际会发生什么?_C#_Asp.net_Sql Server_Scope - Fatal编程技术网

C# 当模型超出使用范围时,实际会发生什么?

C# 当模型超出使用范围时,实际会发生什么?,c#,asp.net,sql-server,scope,C#,Asp.net,Sql Server,Scope,我使用块来实现db模型,以避免混淆处理和任何相关的非托管资源需求,但我想知道(基本上)当db模型超出使用块范围时会发生什么。问题不在于处理或记忆(我知道,它会自动为我们处理)。关于SQL连接和相关实例的问题 下面是一个简单的(ActionResult)示例: 问题是:“在模型的使用范围之外访问Account类实例(由AccountsModel提供)是否安全?” 注意:我知道,我不能/不能对超出范围的表执行任何更新。只要AccountsModel的dispose调用不破坏它,那么继续访问由模型创建

我使用块来实现db模型,以避免混淆处理和任何相关的非托管资源需求,但我想知道(基本上)当db模型超出使用块范围时会发生什么。问题不在于处理或记忆(我知道,它会自动为我们处理)。关于SQL连接和相关实例的问题

下面是一个简单的(
ActionResult
)示例:

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


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

只要
AccountsModel
dispose
调用不破坏它,那么继续访问由模型创建的对象应该没有问题


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

dispose方法的实现。里面有什么happens@M.kazemAkhgary“问题不是关于释放或内存,而是关于SQL连接和相关实例”若您重写Dispose方法并在其中不放入任何内容,那个么什么也不会发生<代码>使用将调用Dispose。就这些。你可以在教室里做数学。玩游戏。任何东西我没有重写/重载
Dispose
方法,这就是我为什么要问的原因。我没有重写/重载
Dispose
方法,所以它安全吗?如果你不这样做,我会想象所做的就是清理所有连接。在内存中创建的任何东西都应该是好的。这是一个实体框架模型吗?是的,
AccountsModel
是一个
ADO.Net实体模型
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();