« Entity Framework Core 7 » : différence entre les versions
Apparence
Ligne 49 : | Ligne 49 : | ||
= Connection string = | = Connection string = | ||
* [[Asp.net_core_7# | * The connection string could be stored in the [[Asp.net_core_7#Safe_storage_of_app_secrets_in_development_in_ASP.NET_Core|secret store]] in dev environnement | ||
* It could also be stored in {{boxx|appsettings.Development.json}} in dev environnement | |||
<filebox fn='appsettings.json'> | <filebox fn='appsettings.json'> | ||
{ | { | ||
Ligne 75 : | Ligne 75 : | ||
=== SQL Server === | === SQL Server === | ||
==== SqlConnectionStringBuilder ==== | |||
<filebox fn='Program.cs'> | <filebox fn='Program.cs'> | ||
var connectionStringWithoutPassword = builder.Configuration.GetConnectionString("SqlServer"); | var connectionStringWithoutPassword = builder.Configuration.GetConnectionString("SqlServer"); | ||
var connectionStringBuilder = new SqlConnectionStringBuilder(connectionStringWithoutPassword); // Package: System.Data.SqlClient | var connectionStringBuilder = new SqlConnectionStringBuilder(connectionStringWithoutPassword); // Package: System.Data.SqlClient | ||
connectionStringBuilder.Password = builder.Configuration["SqlServerPassword"]; | connectionStringBuilder.Password = builder.Configuration["SqlServerPassword"]; | ||
var connectionString = connectionStringBuilder.ConnectionString; | var connectionString = connectionStringBuilder.ConnectionString; | ||
</filebox> | </filebox> | ||
Version du 28 juin 2023 à 22:10
Entity Framework Core Tools
# test if Entity Framework Core Tools has been installed
dotnet ef
# be sure to run the previous command in the folder of the project where EF has been added
# dotnet ef must be installed as a global or local tool
dotnet tool install --global dotnet-ef
# installed in ~/.dotnet/tools
# Add ~/.dotnet/tools to PATH
# update
dotnet tool update --global dotnet-ef
|
![]() |
Visual Studio
|
Add Entity Framework Core package
# sql server
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Design
# mysql
dotnet add package Pomelo.EntityFrameworkCore.MySql
dotnet add package Microsoft.EntityFrameworkCore.Design
|
Data Providers
Provider | Package NuGet | Connection String |
---|---|---|
SQL Server | Microsoft.EntityFrameworkCore.SqlServer | Server=(localdb)\\MSSQLLocalDB;Database=MyDb;Integrated Security=True;MultipleActiveResultSets=True; Server=localhost;Database=MyDb;User=sa;Password=pwd; |
MySQL / MariaDB | Pomelo.EntityFrameworkCore.MySql | server=localhost;database=MyDb;user=root;password=pwd |
PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL | Host=localhost;Database=MyDb;Username=root;Password=pwd |
InMemory | Microsoft.EntityFrameworkCore.InMemory | databaseName: "test_database" |
Sqlite | Microsoft.EntityFrameworkCore.Sqlite | Data Source=/tmp/file.db |
Connection string
- The connection string could be stored in the secret store in dev environnement
- It could also be stored in appsettings.Development.json in dev environnement
appsettings.json |
{
"ConnectionStrings": {
"MariaDb": "server=localhost;database=test;user=test;password=***"
}
}
|
Dependency injection (ASP.Net Core)
MariaDb / MySql
Program.cs |
var connectionString = builder.Configuration.GetConnectionString("MariaDb");
var serverVersion = new MariaDbServerVersion(new Version(10, 11, 4));
builder.Services.AddDbContext<MyAppContext>(
dbContextOptions => dbContextOptions
.UseMySql(connectionString, serverVersion)
// TODO The following three options help with debugging, but should be changed or removed for production.
.LogTo(Console.WriteLine, LogLevel.Information)
.EnableSensitiveDataLogging()
.EnableDetailedErrors());
|
SQL Server
SqlConnectionStringBuilder
Program.cs |
var connectionStringWithoutPassword = builder.Configuration.GetConnectionString("SqlServer");
var connectionStringBuilder = new SqlConnectionStringBuilder(connectionStringWithoutPassword); // Package: System.Data.SqlClient
connectionStringBuilder.Password = builder.Configuration["SqlServerPassword"];
var connectionString = connectionStringBuilder.ConnectionString;
|
DbContext OnConfiguring
DataAccess/MyAppContext.cs |
public class MyAppContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("server=localhost;database=test;user=test;password=***"); // hard-coded connection string
optionsBuilder.UseMySql("name=ConnectionStrings:MariaDb", ServerVersion.Parse("10.11.4-mariadb")); // connection string in the appsettings.json
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["SqlServerConnectionString"].ConnectionString); // WPF
|