C# 我可以扩展API控制器来保存数据库上下文的变量吗?
我有很多像这样的课程。他们都有两个共同点。他们声明了一个名为Context的私有变量,并有一个方法来使用它 有没有一种方法可以创建一个可以继承的中间类,该类包含声明变量和dispose方法的代码?我认为这很容易做到,但我不确定如何声明变量和方法。他们应该是私人的吗C# 我可以扩展API控制器来保存数据库上下文的变量吗?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有很多像这样的课程。他们都有两个共同点。他们声明了一个名为Context的私有变量,并有一个方法来使用它 有没有一种方法可以创建一个可以继承的中间类,该类包含声明变量和dispose方法的代码?我认为这很容易做到,但我不确定如何声明变量和方法。他们应该是私人的吗 public class TypeController : ApiController { private Context db = new Context(); [Route("GetMapData")]
public class TypeController : ApiController
{
private Context db = new Context();
[Route("GetMapData")]
public async Task<IHttpActionResult> GetMapData()
{
var result = await db.Types
.Select(e => new
{
Id = e.TypeId,
Name = e.Name
})
.ToListAsync();
return Ok(result);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
公共类TypeController:ApicController
{
私有上下文数据库=新上下文();
[路线(“GetMapData”)]
公共异步任务GetMapData()
{
var result=await db.Types
.选择(e=>new
{
Id=e.TypeId,
Name=e.Name
})
.ToListAsync();
返回Ok(结果);
}
受保护的覆盖无效处置(布尔处置)
{
如果(处置)
{
db.Dispose();
}
基地。处置(处置);
}
}
您最好使用依赖项注入
尝试使用依赖项解析器来维护对象的生存时间
您可以从这里开始您可以创建一个这样做的基类,并将
db
变量声明为protected
public class BaseController : ApiController
{
protected Context db = new Context();
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
public class TypeController : BaseController
{
[Route("GetMapData")]
public async Task<IHttpActionResult> GetMapData()
{
var result = await db.Types
.Select(e => new
{
Id = e.TypeId,
Name = e.Name
})
.ToListAsync();
return Ok(result);
}
}
公共类BaseController:ApiController
{
受保护的上下文数据库=新上下文();
受保护的覆盖无效处置(布尔处置)
{
如果(处置)
{
db.Dispose();
}
基地。处置(处置);
}
}
公共类TypeController:BaseController
{
[路线(“GetMapData”)]
公共异步任务GetMapData()
{
var result=await db.Types
.选择(e=>new
{
Id=e.TypeId,
Name=e.Name
})
.ToListAsync();
返回Ok(结果);
}
}