【发布时间】:2019-07-13 18:03:20
【问题描述】:
我想扩展以下问题:
How to instantiate a DbContext in EF Core
我已经在我的控制器中完成了上述操作,但现在我正在尝试在我希望所有数据库方法/查询发生的地方创建 DataAccess.cs。例如,到目前为止,我有以下内容:
控制器:
public class HomeController : Controller
{
DataAccess da = new DataAccess() { };
private readonly DatabaseContext db;
public HomeController(DatabaseContext reg)
{
db = reg;
}
[HttpPost, ValidateAntiForgeryToken]
public IActionResult Register(User model)
{
model.WindowsAuth = User.Identity.Name;
if (ModelState.IsValid)
{
da.Registration(model, db);
return RedirectToAction("Index");
}
在 DataAccess.cs 中
public class DataAccess
{
public void Registration(User model, DatabaseContext db)
{
User newUser = new User();
db.Users.Add(model);
db.SaveChanges();
}
}
数据库上下文
public class DatabaseContext :DbContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
}
上述方法有效,但我想在 DataAccess.cs 中添加更多方法。我每次都需要将数据库作为参数从控制器传递吗?当我尝试在我的数据访问类中实例化上下文类时,db 变量显示为 null。我是 MVC 的新手,因此任何与此相关的进一步阅读或资源将不胜感激。
【问题讨论】:
-
能否请您出示您的
DataAccess班级? -
它就在那里。不过我现在已经添加了上下文类。
标签: c# asp.net-core model-view-controller