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访问权限
四、额外排查步骤
- 捕获并查看具体异常信息:
try { dataBaseContext.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.InnerException?.Message); throw; } - 确认User模型类字段与数据库表字段完全匹配(数据类型、长度、可空性等)
- 启用EF Core日志查看执行细节:
builder.Logging.AddConsole();
内容的提问来源于stack exchange,提问作者RimAliA
相关产品推荐
相关产品推荐

