Asp.net mvc 在添加到Razor页面的新MVC控制器中引用DbContext
我有一个纯.NETCore2.2RazorPages应用程序,没有MVC模块。 然后我添加了一个控制器文件夹,一个视图文件夹,并使用了我已有的Models文件夹 我试图在新控制器中引用我的数据库,但似乎无法获取语法。 下面是我的working Courses Page.cs文件,顶部是working DbContext:Asp.net mvc 在添加到Razor页面的新MVC控制器中引用DbContext,asp.net-mvc,dbcontext,razor-pages,Asp.net Mvc,Dbcontext,Razor Pages,我有一个纯.NETCore2.2RazorPages应用程序,没有MVC模块。 然后我添加了一个控制器文件夹,一个视图文件夹,并使用了我已有的Models文件夹 我试图在新控制器中引用我的数据库,但似乎无法获取语法。 下面是我的working Courses Page.cs文件,顶部是working DbContext: namespace OESAC.Pages.Courses { public class IndexModel : PageModel { pu
namespace OESAC.Pages.Courses
{
public class IndexModel : PageModel
{
public readonly MyDbContext _context;
public IndexModel(MyDbContext context)
{
_context = context;
}
下面是我的MVC控制器代码的顶部,我以为我已经找到了,但是我得到了一个错误
System.NullReferenceException:“对象引用未设置为对象的实例。”
_配置为空
最后两行是我得到错误的地方(保存更改)。常规数据驱动的Razor页面使用db.SaveChanges,因为我有正确的语法来声明_上下文
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;
}
...
}
Net核心使用DI,您可以尝试在启动类中注册dbContext。谢谢您。你让我开心。我花了将近一周的时间试图让PayPal使用Razor页面。最后添加了控制器和视图,并使用了一些旧的MVC代码。它像一个魔咒一样,一下子就成功了,到了沙箱又回来了,但现在值回来了,但这是另一个就寝时间的另一个故事。非常感谢。