You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC应用SQL Server连接及数据保存问题求助

ASP.NET Core MVC SQL Server连接与保存数据问题排查与修复

一、DbContext构造函数泛型参数修正

原DbContext使用非泛型DbContextOptions会导致依赖注入无法正确解析上下文,需改为泛型版本:

public class DataBaseContext:DbContext
{
    public DataBaseContext(DbContextOptions<DataBaseContext> options):base(options)
    {
    }

    public DbSet<User> User { get; set; }
}

二、控制器请求特性与模型验证修正

Registration方法默认是GET请求,无法正确接收表单提交数据,且未做模型校验,需添加[HttpPost]特性并验证模型状态:

public class RegistrationController : Controller
{
    private readonly DataBaseContext dataBaseContext;

    public RegistrationController(DataBaseContext databaseContext)
    {
            this.dataBaseContext = databaseContext;
    }
    
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public IActionResult Registration(User user)
    {
        if (!ModelState.IsValid)
        {
            return View("Index", user);
        }
        dataBaseContext.User.Add(user);
        dataBaseContext.SaveChanges();

        return RedirectToAction("Index");
    }
}

三、连接字符串正确性确认

  • 若使用SQL Server Express实例,服务器名称需改为localhost\SQLEXPRESS
  • 确认OnlineShop数据库已在指定SQL Server实例中创建
  • 若采用SQL Server身份验证,连接字符串需修改为:
    Server=localhost\SQLEXPRESS;Database=OnlineShop;User Id=你的用户名;Password=你的密码;
    
  • 检查当前运行程序的账户(应用池账户或本地用户)是否拥有SQL Server访问权限

四、额外排查步骤

  1. 捕获并查看具体异常信息:
    try
    {
        dataBaseContext.SaveChanges();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.InnerException?.Message);
        throw;
    }
    
  2. 确认User模型类字段与数据库表字段完全匹配(数据类型、长度、可空性等)
  3. 启用EF Core日志查看执行细节:
    builder.Logging.AddConsole();
    

内容的提问来源于stack exchange,提问作者RimAliA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:05:18