在已添加到 Razor Pages 的新 MVC 控制器中引用 DbContext
Reference DbContext in new MVC Controller that has been added to Razor Pages
我有一个没有 MVC 模块的纯 .NET Core 2.2 Razor Pages 应用程序。
然后我添加了一个 Controller 文件夹,一个 View 文件夹,并使用我已有的 Models 文件夹。
我试图在新控制器中引用我的数据库,但我似乎无法获得语法。
这是我的工作课程页面 .cs 文件,顶部有工作 DbContext:
namespace OESAC.Pages.Courses
{
public class IndexModel : PageModel
{
public readonly MyDbContext _context;
public IndexModel(MyDbContext context)
{
_context = context;
}
下面是我的 MVC 控制器代码的顶部,我认为我已经弄明白了,但我收到了一个错误。
System.NullReferenceException: 'Object reference not set to an instance of an object.'
_configuration 为空。
最后两行是我收到错误的地方(保存更改)。常规数据驱动的 Razor 页面与 db.SaveChanges 一起工作,因为我有声明 _context 的正确语法。
namespace OESAC.Controllers
{
public class HomeController : Controller
{
MyDbContext db = new MyDbContext();
public ActionResult StartTransaction(string oesacID, string fee)
{
var model = new Models.PayPalTransactions();
string strToday = DateTime.Today.ToString();
model.TransactionDate = DateTime.Parse(strToday);
model.RecordCreated = DateTime.Parse(strToday);
model.CourseID = 4444;
model.SponsorID = 3333;
model.AmountCharged = 1;
//INSERT TRANSACTION ROW IN TRANSACTION TABLE
db.PayPalTransactions.Add(model);
db.SaveChanges();
您也可以在控制器中使用依赖注入。
public class HomeController : Controller
{
private readonly MyDbContext _context;
public HomeController(MyDbContext context)
{
_context = context;
}
...
}
我有一个没有 MVC 模块的纯 .NET Core 2.2 Razor Pages 应用程序。 然后我添加了一个 Controller 文件夹,一个 View 文件夹,并使用我已有的 Models 文件夹。
我试图在新控制器中引用我的数据库,但我似乎无法获得语法。 这是我的工作课程页面 .cs 文件,顶部有工作 DbContext:
namespace OESAC.Pages.Courses
{
public class IndexModel : PageModel
{
public readonly MyDbContext _context;
public IndexModel(MyDbContext context)
{
_context = context;
}
下面是我的 MVC 控制器代码的顶部,我认为我已经弄明白了,但我收到了一个错误。
System.NullReferenceException: 'Object reference not set to an instance of an object.' _configuration 为空。
最后两行是我收到错误的地方(保存更改)。常规数据驱动的 Razor 页面与 db.SaveChanges 一起工作,因为我有声明 _context 的正确语法。
namespace OESAC.Controllers
{
public class HomeController : Controller
{
MyDbContext db = new MyDbContext();
public ActionResult StartTransaction(string oesacID, string fee)
{
var model = new Models.PayPalTransactions();
string strToday = DateTime.Today.ToString();
model.TransactionDate = DateTime.Parse(strToday);
model.RecordCreated = DateTime.Parse(strToday);
model.CourseID = 4444;
model.SponsorID = 3333;
model.AmountCharged = 1;
//INSERT TRANSACTION ROW IN TRANSACTION TABLE
db.PayPalTransactions.Add(model);
db.SaveChanges();
您也可以在控制器中使用依赖注入。
public class HomeController : Controller
{
private readonly MyDbContext _context;
public HomeController(MyDbContext context)
{
_context = context;
}
...
}