【发布时间】:2018-10-25 10:18:34
【问题描述】:
我有一个 ASP.NET Core 2.1 Web 应用程序,它是按照 ASP.NET Core 文档中Create Razor pages web app 中的步骤创建的。一切都按预期进行,我使用了在搭建模型时创建的默认 localdb。那部分很好。
然而,我需要做的是尝试在生产环境中使用相同的通用代码,其中所有 CRUD 功能都是通过调用 WebApi 方法执行的,使用与我的模型对象直接匹配的 JSON 数据。
例如,脚手架为Create创建的Page是这样的:
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
_context.Registration.Add(Registration); // Here
await _context.SaveChangesAsync(); // Here
return RedirectToPage("./Index");
}
和
public async Task OnGetAsync()
{
Registration = await _context.Registration.ToListAsync(); // Here
}
是否有可能,甚至可行,简单地改变每次出现的 _context 操作,比如标记为“//Here”的行,使用对 WebApi 方法的调用?有没有更好的方法来完成我想做的事情?
【问题讨论】:
-
当然,您是否查看过从 C# 调用 rest api 调用?
-
是的,当然。我要做的是尽可能多地保留生成的代码,甚至使用 _context 如果我能以某种方式将其更改为使用从 WebApi 返回值读取的数据,而不是连接到实际的并从中读取数据库。
-
因此,您正在寻找一种调用 WebApi 的便捷方式,而不是使用 DBContext 将数据添加到数据库。如果我真的明白你在问什么,答案不是真的,它们是苹果和橙子(或者我应该说,苹果和保龄球),它们几乎没有相似之处。你将不得不编写 WebRequests 并且你无法摆脱它
-
我知道我仍然需要调用 WebApi。我希望完成的是尽可能多地维护与 _context 相关的代码。感谢您的帮助!
-
所以,如果我错了,请纠正我,但我可以通过仅在使用实际数据库在本地运行时调用 Startup 中的 AddDbContext 方法来解决两个非常不同的数据环境的要求(这会导致 DbContext 被注入到基于 PageModel 的类中),而不是在我为我的数据使用 WebApi 调用(并在 PageModels 中使用空 ctor)时调用 AddDbContext。或者,创建我自己的扩展与 ServiceCollection 一起使用,以便将我的自定义数据上下文注入到 PageModels 中?
标签: c# asp.net asp.net-core asp.net-core-webapi dbcontext