Ajouter un commentaire

Microsoft publie Entity Framework Core 5.0 RC 1

Par:
fredericmazue

mer, 23/09/2020 - 16:48

L'équipe Entity Framework Core a annoncé la première version candidate (RC1) du framework. Cette version inclut de nouvelles fonctionnalités telles que les relations plusieurs à plusieurs, les compteurs d'événements, la possibilité d'écouter les événements de sauvegarde, etc.

Les versions candidates d'EF Core 5.0 nécessitent .NET Standard 2.1. Cela signifie qu'EF Core 5.0 s'exécutera sur .NET Core 3.1 et ne nécessite pas .NET 5. Par contre, EF Core 5.0 ne fonctionnera pas sur les plates-formes .NET Standard 2.0, y compris .NET Framework. EF Core est distribué exclusivement sous la forme d'un ensemble de packages NuGet. Pour l'installer :

dotnet tool install --global dotnet-ef --version 5.0.0-rc.1.20451.13

ou pour mettre à jour une version antérieure

dotnet tool update --global dotnet-ef --version 5.0.0-rc.1.20451.13

EF Core 5.0 prend en charge les relations plusieurs-à-plusieurs sans mapper explicitement la table de jointure. Par exemple, considérez ces types d'entités:

public class Post
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Tag> Tags { get; set; }
}

public class Tag
{
public int Id { get; set; }
public string Text { get; set; }
public ICollection<Post> Posts { get; set; }
}

On remarque dans le code ci-dessus que Post contient une collection de Tagset Tagcontient une collection de Posts. EF Core 5.0 reconnaît cela comme une relation plusieurs-à-plusieurs par convention. Lorsque des migrations sont utilisées pour créer la base de données, EF Core crée automatiquement la table de jointure. Par exemple, sur SQL Server pour ce modèle, EF Core génère:

CREATE TABLE [Posts] (
[Id] int NOT NULL IDENTITY,
[Name] nvarchar(max) NULL,
CONSTRAINT [PK_Posts] PRIMARY KEY ([Id])
);

CREATE TABLE [Tag] (
[Id] int NOT NULL IDENTITY,
[Text] nvarchar(max) NULL,
CONSTRAINT [PK_Tag] PRIMARY KEY ([Id])
);

CREATE TABLE [PostTag] (
[PostsId] int NOT NULL,
[TagsId] int NOT NULL,
CONSTRAINT [PK_PostTag] PRIMARY KEY ([PostsId], [TagsId]),
CONSTRAINT [FK_PostTag_Posts_PostsId] FOREIGN KEY ([PostsId]) REFERENCES [Posts] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_PostTag_Tag_TagsId] FOREIGN KEY ([TagsId]) REFERENCES [Tag] ([Id]) ON DELETE CASCADE
);

CREATE INDEX [IX_PostTag_TagsId] ON [PostTag] ([TagsId]);

Les compteurs d'événements .NET sont un moyen d'exposer les métriques de performances d'une application. Par exemple :

dotnet counters monitor Microsoft.EntityFrameworkCore -p 49496

indique aux compteurs dotnet de commencer à collecter les événements EF Core pour le processus 49496. Cela génère une sortie comme celle-ci dans la console:

[Microsoft.EntityFrameworkCore]
Active DbContexts 1
Execution Strategy Operation Failures (Count / 1 sec) 0
Execution Strategy Operation Failures (Total) 0
Optimistic Concurrency Failures (Count / 1 sec) 0
Optimistic Concurrency Failures (Total) 0
Queries (Count / 1 sec) 1,755
Queries (Total) 98,402
Query Cache Hit Rate (%) 100
SaveChanges (Count / 1 sec) 0
SaveChanges (Total) 1

EF Core 5.0 introduit à la fois les événements .NET et un intercepteur EF Core déclenché lorsque SaveChanges est appelé.

Les événements sont simples à utiliser; par exemple:

context.SavingChanges += (sender, args) =>
{
Console.WriteLine($"Saving changes for {((DbContext)sender).Database.GetConnectionString()}");
};

context.SavedChanges += (sender, args) =>
{
Console.WriteLine($"Saved {args.EntitiesSavedCount} changes for {((DbContext)sender).Database.GetConnectionString()}");
};

Entity Framework Core 5.0 RC 1 est sur nuget.org.

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 N   N  III  BBBB   W     W   GGG  
NN N I B B W W G
N N N I BBBB W W W G GG
N NN I B B W W W G G
N N III BBBB W W GGG