Entity framework 从模型到数据库的路径是什么?
我在VS中使用ASP.NET核心Web应用程序模板创建了一个项目。运行时,该项目将创建一个数据库以支持标识包 标识包是一个Razor类库。我已经搭建了脚手架,可以看到模型。这些模型从Microsoft.AspNetCore.Mvc.RazorPages.PageModel中进行子分类 我正在跟踪代码,试图更好地理解它是如何工作的。我试图找到从模型到物理数据库的路径 在文件Entity framework 从模型到数据库的路径是什么?,entity-framework,asp.net-core,Entity Framework,Asp.net Core,我在VS中使用ASP.NET核心Web应用程序模板创建了一个项目。运行时,该项目将创建一个数据库以支持标识包 标识包是一个Razor类库。我已经搭建了脚手架,可以看到模型。这些模型从Microsoft.AspNetCore.Mvc.RazorPages.PageModel中进行子分类 我正在跟踪代码,试图更好地理解它是如何工作的。我试图找到从模型到物理数据库的路径 在文件appsettings.json中,我看到连接字符串DefaultConnection指向物理数据库 在startup.cs中
appsettings.json
中,我看到连接字符串DefaultConnection
指向物理数据库
在startup.cs
中,我看到了对连接字符串DefaultConnection
的引用:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDbContext(选项=>
options.UseSqlServer(
GetConnectionString(“DefaultConnection”);
在这之后,我失去了踪迹。我找不到从代码中的模型到数据库中的表的链接。执行类似以下查询所需的代码是什么?
select*from AspNetUsers
?正如@Daniel Schmid所建议的,您应该首先学习
ASP.NET Core具有出色的依赖项注入功能,通过该功能,此框架可以为您提供所需的任何类的对象。因此,您不必在代码中手动创建类对象
EF Core支持将DbContext
与依赖项注入容器一起使用。可以使用AddDbContext
方法将您的DbContext
类型添加到服务容器中
然后您可以使用如下实例:
public class MyController
{
private readonly ApplicationDbContext _context;
public MyController(ApplicationDbContext context)
{
_context = context;
}
...
}
或者直接使用ServiceProvider,不太常见:
using (var context = serviceProvider.GetService<ApplicationDbContext>())
{
// do stuff
}
var options = serviceProvider.GetService<DbContextOptions<ApplicationDbContext>>();
另请阅读。这是您使用DefaultConnection ConnectionString配置的ApplicationDbContext。您需要的是该上下文的实例。您可以从依赖项注入中获得它,并将其传递给要使用它的类的构造函数。有了这个实例,您就可以访问用户了。(例如db.AspNetUsers.ToList())将生成类似于select*from AspNetUsers的内容)我非常推荐channel9上的101个视频和上面
services.AddDbContext
方法中的(入门)文档,这样添加的ApplicationDbContext
如何在我的代码中的其他地方被引用和访问?要理解这一点,您需要理解依赖注入(DI)和控制反转(IC)。上面的代码将上下文添加到DI容器中。然后,您可以将其注入到您喜欢的任何类中。DI负责实例化和更多。模板项目在任何地方都使用DI,它在asp.net核心和一般编程中都是一个非常重要的概念。您需要了解这一点,而不仅仅是通过查看模板项目。所以我重复一遍——阅读文档和/或观看介绍性视频
var users = _context.Users.ToList();