Wie benutze ich Guid V7 im EF -Kern?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie benutze ich Guid V7 im EF -Kern?

Post by Guest »

Ich habe auf .NET 9 und EF Core 9 aktualisiert. Der V7, der mit .NET 9 geliefert wurde: Guid.CreateVersion7 () . Also habe ich eine benutzerdefinierte Lösung implementiert. > Die Lösung, die ich mit Werken entwickelt habe, aber ich bin mir nicht sicher, ob es die beste ist (oder sogar eine gute).
Das habe ich getan:

Erstellen Sie einen benutzerdefinierten Wertgenerator für V7 -Richtlinien. < /li>
Erstellen Sie eine benutzerdefinierte Konvention, die den benutzerdefinierten Generator verwendet > Registrieren Sie diese Konvention weltweit mit EF Core < /li>
< /ol>
Schritt 1: < /p>

Code: Select all

public class GuidV7ValueGenerator : ValueGenerator
{
public override bool GeneratesTemporaryValues => false;
public override Guid Next(EntityEntry _) => Guid.CreateVersion7();
}
< /code>
Schritt 2: < /p>
public class GuidV7Convention : IModelFinalizingConvention
{
public void ProcessModelFinalizing(IConventionModelBuilder modelBuilder, IConventionContext _)
{
foreach (var entityType in modelBuilder.Metadata.GetEntityTypes())
{
foreach (var property in entityType.GetProperties())
{
if (property.ClrType == typeof(Guid) && property.ValueGenerated == ValueGenerated.OnAdd)
{
property.SetValueGeneratorFactory((_, _) => new GuidV7ValueGenerator());
}
}
}
}
}
< /code>
Schritt 3: < /p>
public class MyDbContext(...) : DbContext
{
public DbSet Foos { get; set; } = null!;

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// ...
}

protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
base.ConfigureConventions(configurationBuilder);
configurationBuilder.Conventions.Add(_ => new GuidV7Convention());
}
}
Dies funktioniert.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post