updated ex_041_001

EFCore3_Reforged
Marc CHEVALDONNE 6 years ago
parent f679875982
commit 8e0008096b

@ -0,0 +1,36 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using ex_041_001_ConnectionStrings;
namespace ex_041_001_ConnectionStrings.Migrations
{
[DbContext(typeof(SQLiteContext))]
[Migration("20200109092359_ex_041_001")]
partial class ex_041_001
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.0");
modelBuilder.Entity("ex_041_001_ConnectionStrings.Nounours", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Nom")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Nounours");
});
#pragma warning restore 612, 618
}
}
}

@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ex_041_001_ConnectionStrings.Migrations
{
public partial class ex_041_001 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Nounours",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Nom = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Nounours", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Nounours");
}
}
}

@ -0,0 +1,34 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using ex_041_001_ConnectionStrings;
namespace ex_041_001_ConnectionStrings.Migrations
{
[DbContext(typeof(SQLiteContext))]
partial class SQLiteContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.0");
modelBuilder.Entity("ex_041_001_ConnectionStrings.Nounours", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Nom")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Nounours");
});
#pragma warning restore 612, 618
}
}
}

@ -1,4 +1,5 @@
using System;
using System.Runtime.InteropServices;
namespace ex_041_001_ConnectionStrings
{
@ -10,10 +11,32 @@ namespace ex_041_001_ConnectionStrings
Nounours yoda = new Nounours { Nom = "Yoda" };
Nounours ewok = new Nounours { Nom = "Ewok" };
using (var context = new SqlServerContext())
if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
using (var context = new SqlServerContext())
{
// Crée des nounours et les insère dans la base
Console.WriteLine("Creates and inserts new Nounours with SqlServer");
context.Add(chewie);
context.Add(yoda);
context.Add(ewok);
context.SaveChanges();
}
using (var context = new SqlServerContext())
{
foreach(var n in context.Nounours)
{
Console.WriteLine($"{n.Id} - {n.Nom}");
}
context.SaveChanges();
}
}
using (var context = new SQLiteContext())
{
// Crée des nounours et les insère dans la base
Console.WriteLine("Creates and inserts new Nounours");
Console.WriteLine("Creates and inserts new Nounours with SQLite");
context.Add(chewie);
context.Add(yoda);
context.Add(ewok);
@ -22,11 +45,10 @@ namespace ex_041_001_ConnectionStrings
using (var context = new SQLiteContext())
{
// Crée des nounours et les insère dans la base
Console.WriteLine("Creates and inserts new Nounours");
context.Add(chewie);
context.Add(yoda);
context.Add(ewok);
foreach(var n in context.Nounours)
{
Console.WriteLine($"{n.Id} - {n.Nom}");
}
context.SaveChanges();
}
}

@ -1,5 +1,6 @@
# ex_041_001_ConnectionStrings
*31/12/2019 &sdot; Marc Chevaldonné*
*31/12/2019 &sdot; Marc Chevaldonné*
*Dernière mise à jour : 09/01/2020 &sdot; Marc Chevaldonné*
---
@ -42,7 +43,8 @@ C'est tout ce que cet exemple souhaite mettre en valeur : les chaînes de connex
## Comment générer et exécuter l'exemple ?
Pour générer l'exemple, il vous faut d'abord préparer les migrations et les tables.
* Ouvrez la *Console du Gestionnaire de package*, pour cela, dirigez-vous dans le menu *Outils*, puis *Gestionnaire de package NuGet*, puis *Console du Gestionnaire de package*.
* (__Windows__ Visual Studio 2019) : ouvrez la *Console du Gestionnaire de package*, pour cela, dirigez-vous dans le menu *Outils*, puis *Gestionnaire de package NuGet*, puis *Console du Gestionnaire de package*.
* (__MacOSX__ Visual Studio 2019 For Mac) : ouvrez un Terminal.
* Dans la console que vous venez d'ouvrir, déplacez-vous dans le dossier du projet, ici :
```
cd .\p08_BDD_EntityFramework\ex_041_001_ConnectionStrings
@ -66,23 +68,45 @@ mais comme ici, nous sommes dans le cas particulier où nous avons deux contexte
dotnet ef migrations add ex_041_001_SqlServer --context SqlServerContext
dotnet ef migrations add ex_041_001_SQLite --context SQLiteContext
```
*Note : sous MacOSX, n'utilisez que SQLite, soit :*
```
dotnet ef migrations add ex_041_001_SQLite --context SQLiteContext
```
### Création des tables
Tapez ensuite les commandes suivantes :
```
dotnet ef database update --context SqlServerContext
dotnet ef database update --context SQLiteContext
```
*Note : sous MacOSX, n'utilisez que SQLite, soit :*
```
dotnet ef database update --context SQLiteContext
```
### Génération et exécution
Vous pouvez maintenant générer et exécuter l'exemple.
Le résultat de l'exécution peut donner :
* sur Windows :
```
Creates and inserts new Nounours with SqlServer
1 - Chewbacca
2 - Yoda
3 - Ewok
Creates and inserts new Nounours with SQLite
1 - Chewbacca
2 - Yoda
3 - Ewok
```
* sur MacOSX :
```
Creates and inserts new Nounours
Creates and inserts new Nounours
Creates and inserts new Nounours with SQLite
1 - Chewbacca
2 - Yoda
3 - Ewok
```
## Comment vérifier le contenu des bases de données SQL Server et SQLite ?
### SqlServer
### SqlServer (seulement sur Windows)
Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'objets SQL Server*.
* Pour cela, allez dans le menu *Affichage* puis *Explorateur d'objets SQL Server*.
<img src="./readmefiles/sqlserver_01.png" width="500"/>
@ -106,7 +130,7 @@ Vous pouvez vérifier le contenu de votre base en utilisant l'*Explorateur d'obj
Notez qu'il est également possible d'utiliser l'*Explorateur d'objets SQL Server* pour ajouter, modifier ou supprimer des données dans les tables.
### SQLite
### SQLite (Windows et MacOSX)
Pour vérifier le contenu de votre base SQLite, vous pouvez utiliser le programme *DB Browser* :
* Rendez-vous sur la page : https://sqlitebrowser.org/dl/ et téléchargez le programme *DB Browser*.
* Lancez *DB Browser for SQLite*

@ -9,6 +9,6 @@
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.0" />
</ItemGroup>
</Project>

Loading…
Cancel
Save