gpt4 book ai didi

c# - Entity Framework 的“使用”关键字与类字段

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:24 24 4
gpt4 key购买 nike

我知道 using 关键字基本上在作用域结束后调用 Dispose(),但是,从 using 子句是一个类字段?示例:

public class ValuesController : ApiController
{
DatabaseEntities db;

public ValuesController()
{
db = new DatabaseEntities();
}

public IHttpActionResult GetList()
{
return Ok(db.Values.ToList());
}
}

对比:

public class ValuesController : ApiController
{
public IHttpActionResult GetList()
{
using (DatabaseEntities db = new DatabaseEntities())
{
return Ok(db.Values.ToList());
}
}
}

第一个示例中的 API 调用完成后,DatabaseEntities 是否会正确处理?第一个例子是不好的做法吗?

最佳答案

将其封装在您的 Controller 中是安全的,但前提是您将其置于 Controller 的 Dispose(bool) 中。例如:

public class ValuesController : ApiController
{
DatabaseEntities db;

public ValuesController()
{
db = new DatabaseEntities();
}

public IHttpActionResult GetList()
{
return Ok(db.Values.ToList());
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}

但使用 DI 比覆盖 Controller 上的 Dispose(bool) 更容易,因此它可能不是最佳实践。

关于c# - Entity Framework 的“使用”关键字与类字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58943832/

24 4 0
文章推荐: javascript - 我需要帮助将 JS Json 结果的输出分配给变量并以 HTML 显示它
文章推荐: python - Pyinsane 示例失败并显示 "no module named src.abstract"
文章推荐: html -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com