【问题标题】:ASP.NET Core 2 - How to call and manipulate a Database class from a controllerASP.NET Core 2 - 如何从控制器调用和操作数据库类
【发布时间】:2018-02-05 23:20:32
【问题描述】:

我正在使用 ASP.NET Core 2,并且我有一个运行 Tasks 的控制器。
例如,下面是一个简单的文件上传,我有其他运行其他 Tasks 或 Actions 并且我希望能够将事件或任务记录到我的数据库中。

所以我需要创建一个类来在数据库上运行INSERTs 或UPDATEs。

如何创建一个使用DbContext 或使用类(而不是控制器)调用存储过程的类来执行我的数据库操作?

这是我的控制器代码之一的示例:

public async Task<IActionResult> Uploads(string fullName, IFormFile pic)
{
  try { 
    string user = null;
    try
    {
      user = User.Identity.Name.ToString();
    }
    catch (Exception err)
    {
      user = "anonymous";
    }
    if (user == null)
    {
      user = "";
    }
    string path = he.WebRootPath + "/uploads/" + user ;

    if (!Directory.Exists(path))
    {
      Directory.CreateDirectory(path);
    }

    DateTime date = DateTime.Now ;
    var dates = date.ToLongDateString();
    var ext = Path.GetExtension(path).ToLowerInvariant();
    var fileName = Path.Combine(he.WebRootPath + "/uploads/" + "/" + user, Path.GetFileName(pic.FileName));
    var f = Path.Combine(he.WebRootPath + "/uploads/" + "/" + user,  dates+Path.GetFileName(pic.FileName));
    int i = 0;
    ViewData["fname"] = fullName;
    if (pic != null || pic.Length == 0)
    {
      using (var stream = new FileStream(fileName, FileMode.Create))
      {
        await pic.CopyToAsync(stream);
      }
      ViewData["fileLocation"] = "/uploads/" + user + "/" + Path.GetFileName(pic.FileName);
//  }
}

【问题讨论】:

标签: asp.net-mvc asp.net-core dbcontext


【解决方案1】:

您可以使用dependency injection 将您的 DbContext 注入您的控制器:

public class MyController : Controller
{
    private readonly DbContext _db;
    public MyController(DbContext db)
    {
        _db = db;
    }

    public async Task<IActionResult> Uploads(string fullName, IFormFile pic)
    {
        _db.ExecuteSql("INSERT ...");
    }
}

一旦你有了你的 Db 上下文,你就可以用它做你需要的事情。

【讨论】:

  • 错误 CS1061 'DbContext' 不包含 'ExecuteSql' 的定义,并且找不到接受类型为 'DbContext' 的第一个参数的扩展方法 'ExecuteSql'(您是否缺少 using 指令或程序集参考?)
  • 是的,我的意思是 DbContext 是你自己的上下文类。你还没有设置吗?如果没有,我强烈建议您阅读一些 Entity Framework 核心文档:docs.microsoft.com/en-us/ef/core/miscellaneous/…
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 2019-11-10
  • 2021-04-26
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多