我最近一直在重构一些旧的数据库访问代码.我有一个包含数百种方法的库,看起来像这样
public int getFoo(int id)
{
using(SqlConnection connection = ConnectionManager.GetConnection())
{
string sql = "SELECT TOP(1) foo FROM bar WHERE id=@id";
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@id", id);
return (int)command.ExecuteScalar();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为将SqlCommands 包装成一个using{}块(就像SqlConnection已经存在的那样)是一个明智的事情,这样资源就会尽快被处理掉.出于好奇心,我决定制作以下小型控制台应用程序,以查看将释放多少内存:
using (SqlConnection conn = ConnectionManager.GetConnection())
{
WeakReference reference;
string sql = "SELECT COUNT(foo) FROM bar";
Console.WriteLine("Memory Allocated before SqlCommand: " + GC.GetTotalMemory(true));
using (SqlCommand comm = new SqlCommand(sql,conn))
{
Console.WriteLine("Memory Allocated after SqlCommand: " + GC.GetTotalMemory(true));
reference = new …Run Code Online (Sandbox Code Playgroud) 所以我刚刚开始制作一个新的 mvc 项目。我(自己)制作了一个日历,显示一个月中的天数。它有两个按钮,可以让您获取一年中的月份Back和月份。Forth所以我的问题是我已经为它做了 null Javascript。逻辑在模型中。
现在每次某人。例如,点击Forth按钮,视图会创建一个 HttpPost,它将带有逻辑的模型发送到控制器。
控制器应该更新该值并发送带有更新模型的“新视图”。
这是一个小演示,可以更轻松地解释我的问题。在这种情况下,我想每次将(模型)变量“Number”增加 1。按下按钮。但我不想使用Javascript。那可能吗。
当前状态:如果我按下按钮,Add变量“Number”就会增加 1,仅增加一次。
之后它就什么也不做。不知何故,模型没有更新回视图。我究竟做错了什么?
模型
public class TestModel
{
public int Number = -10;
}
Run Code Online (Sandbox Code Playgroud)
看法
@model MyProject.Models.TestModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<h4>TestModel</h4>
<hr />
</div>
@using (Html.BeginForm())
{
@Html.DisplayFor(model => model.Number)
<p>
<input id="BtnAdd" name="myButton" type="submit" value="Add" />
</p>
}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
控制器
public class TestController : Controller …Run Code Online (Sandbox Code Playgroud)