Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET核心项目中设置实体框架_C#_Sql_Asp.net Mvc_Visual Studio 2017_Asp.net Core Mvc - Fatal编程技术网

C# 如何在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项目中不存在此文件,正如中所确认的,我

我有一个新的ASP.NET核心项目,我试图简单地查询数据库并在页面上显示查询结果。我不熟悉使用ASP.NET核心,通过研究发现最好使用实体框架来查询数据库

为了弄清楚如何通过实体框架连接到数据库,我一直在尝试这样做,但指南中有一个步骤引用了一个名为
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。这个教程网站可以帮助你:谢谢你的链接。它提供了有关如何从现有表派生模型的信息