Asp.net core 使用EntityFrame Work
安装以下Nuget 包
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design
Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer或者Npgsql.EntityFrameworkCore.PostgreSQL
安装完上述Nuget包之后,在appsettings配置文件中配置连接字符串.如下:
{"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*","ConnectionStrings": {"anna": "Host=10.10.11.185;Port=5432;Database=Films;Username=postgres;Password=money13;"}
}
之后,在程序包管理控制台,执行下述命令,即可生成DbContext/ Model,注意,同步修改连接字符串/生成目录等.
Scaffold-DbContext 'Name=ConnectionStrings:anna' Npgsql.EntityFrameworkCore.PostgreSQL -OutputDir Models -ContextDir Context -Context FilmContext
如果修改了数据库,需要再次生成,执行如下命令:
Scaffold-DbContext 'Name=ConnectionStrings:anna' Npgsql.EntityFrameworkCore.PostgreSQL -OutputDir Models -ContextDir Context -Context FilmContext --Force
执行完上述操作后,即配置完EF环境.
在Program.cs中,添加下述代码,配置EF
builder.Services.AddEntityFrameworkNpgsql();
builder.Services.AddDbContext<FilmContext>(options =>options.UseNpgsql(builder.Configuration.GetConnectionString("anna")));
之后,在控制器中通过注入的方式,使用DbContext ,注意,如果通过new的方式实例化,会报错.
private readonly FilmContext _context;public SecondController(ILogger<SecondController> logger, FilmContext context)
{this.logger = logger;logger.LogInformation($"{this.GetType()} 被构造了");_context = context;
}