C# 如何在ASP.NET核心项目中设置实体框架
我有一个新的ASP.NET核心项目,我试图简单地查询数据库并在页面上显示查询结果。我不熟悉使用ASP.NET核心,通过研究发现最好使用实体框架来查询数据库 为了弄清楚如何通过实体框架连接到数据库,我一直在尝试这样做,但指南中有一个步骤引用了一个名为C# 如何在ASP.NET核心项目中设置实体框架,c#,sql,asp.net-mvc,visual-studio-2017,asp.net-core-mvc,C#,Sql,Asp.net Mvc,Visual Studio 2017,Asp.net Core Mvc,我有一个新的ASP.NET核心项目,我试图简单地查询数据库并在页面上显示查询结果。我不熟悉使用ASP.NET核心,通过研究发现最好使用实体框架来查询数据库 为了弄清楚如何通过实体框架连接到数据库,我一直在尝试这样做,但指南中有一个步骤引用了一个名为project.json的文件,其中应添加以下行:“Microsoft.EntityFrameworkCore.Tools”:“1.0.0-preview2-final” 问题是Visual Studio 2017项目中不存在此文件,正如中所确认的,我
project.json
的文件,其中应添加以下行:“Microsoft.EntityFrameworkCore.Tools”:“1.0.0-preview2-final”
问题是Visual Studio 2017项目中不存在此文件,正如中所确认的,我在项目中的任何地方都没有看到.csproj文件,本文引用该文件作为project.json
的替代文件
这个
.csproj
文件应该在项目创建之后创建吗?在Visual Studio 2017内的ASP.NET核心项目中,通过实体框架建立与数据库的连接的实际过程是什么?当我学习如何创建ASP.NET核心项目时,我的老师建议我们从MS文档中遵循这一点。我建议你按照那个指南来解决你的问题。在该指南中,您需要将数据库的连接字符串添加到projects主文件夹中的文件appsettings.json
。连接字符串如下所示:
"Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
"ConnectionStrings": {
"DB_String": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<yourContextClass>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_String")));
services.AddMvc();
}
然后将该连接字符串添加到文件appsettings.json
,如下所示:
"Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
"ConnectionStrings": {
"DB_String": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<yourContextClass>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_String")));
services.AddMvc();
}
然后,您必须通过添加以下行来更改项目主文件夹中Startup.cs
文件中的ConfigureServices
方法:
services.AddDbContext<yourContextClass>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_String")));
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DB_字符串”));
然后该方法将如下所示:
"Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
"ConnectionStrings": {
"DB_String": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=YourDatabaseName;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<yourContextClass>(options => options.UseSqlServer(Configuration.GetConnectionString("DB_String")));
services.AddMvc();
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“DB_字符串”));
services.AddMvc();
}
这是使用ASP.NET Core 2通过SQL Server客户端配置与实体框架的数据库连接的步骤。对于接下来的步骤,我建议您遵循此操作。appsettings.json
"ConnectionStrings": {
"Cn": "Server=(localdb);Database=TestDB;Persist Security Info=True;User ID=sa;Password=abcd123!"
}
DbContext
public TestDbContext:DbContext
{
public TestDbContext(DbContextOptions<TestDbContext> option) : base(option)
{
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
base.OnModelCreating(modelBuilder);
}
public DbSet<Users> Users { get; set; }
公共TestDbContext:DbContext
{
公共TestDbContext(DbContextOptions选项):基本(选项)
{
}
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
foreach(modelBuilder.Model.GetEntityTypes()中的var关系。SelectMany(e=>e.GetForeignKeys())
{
relationship.DeleteBehavior=DeleteBehavior.Restrict;
}
基于模型创建(modelBuilder);
}
公共数据库集用户{get;set;}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TestDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Cn")));
}
public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseSqlServer(Configuration.GetConnectionString(“Cn”));
}
最后,您可以在模型类库下使用代码优先的方法 该指南非常古老,引用了很久以前被废弃的.NETCore的旧版本。试试这里,
libraioteca_Context
来自哪里?这是我做的一个示例练习。。。对不起,我更改了…应该在哪里定义上下文类?@loremIpsum1771应该在项目的另一个源文件中定义上下文。Context
类继承自DbContext
类,该类包含在System.Data.Entity命名空间中。以下是Microsoft MSDN上的DbContext
类定义:因此我只需要将另一个名为yourContextClass的类(在本例中)添加到VS项目的根目录中?需要在哪个文件中创建db上下文?需要做的就是这些吗?@loremIpsum1771,在Model文件夹下,您可以创建TestDbContext。这个教程网站可以帮助你:谢谢你的链接。它提供了有关如何从现有表派生模型的信息