这是使用的正确用法吗?
c#
我不确定如何正确使用 using 语句。
我像这样尝试:
[HttpDelete("{ClubId}", Name = "DeleteOpenings_Club")]
public async Task<IActionResult> DeleteClub_IsOpening([FromRoute] string ClubId)
{
using (_db_ClubIsOpen)
{
var result = _db_ClubIsOpen.ClubIsOpen_TBL.Where(x => x.FK_Club == ClubId);
foreach (var item in result)
{
_db_ClubIsOpen.ClubIsOpen_TBL.Remove(item);
}
_db_ClubIsOpen.SaveChanges();
return Ok();
}
}
回答
using 与生命周期管理相关,这是一个复杂的问题。
通常,using您在此处部署的用途将用于您的方法拥有的东西;例如,这里:
using (var dbContext = new DbContext(whatever))
{
// some code
}
(或只是using var dbContext = new DbContext(whatever);在最近的 C# 版本中)
在上面,我们显然是在创建事物,因此我们的工作是确保它得到处理,这要归功于using.
但是,在问题中的示例中,不清楚_db_ClubIsOpen是什么,生命周期是什么,或者谁拥有它。默认情况下,我绝对不会假设一个方法负责获取任意字段的所有权,所以我不希望在using这里使用,using (_someField)如问题所示。取而代之的是,我希望无论是一些DI / IoC框架来处理与(如果被注入的话),或者我期望的类型来实现IDipsosable,并与放置在现场交易在Dispose()。