complet model builder
All checks were successful
Game Ideas build for PR / build_blazor_app (pull_request) Successful in 50s

This commit is contained in:
2025-04-09 21:39:05 +02:00
parent b7939115e2
commit 749146c8c4
4 changed files with 143 additions and 3 deletions

View File

@@ -11,7 +11,7 @@ public partial class Game
GameDevelopers = new HashSet<GameDeveloper>();
}
public int Id { get; set; }
public Guid Id { get; set; }
public string Title { get; set; } = null!;
public DateTime? ReleaseDate { get; set; }
public DateTime CreationDate { get; set; }

View File

@@ -8,7 +8,7 @@ public partial class User
ModificationGames = new HashSet<Game>();
}
public Guid Id { get; set; }
public int Id { get; set; }
public string Username { get; set; } = null!;
public string Password { get; set; } = null!;
public int Role { get; set; }

View File

@@ -6,15 +6,25 @@ namespace GameIdeas.WebAPI.Context;
public class GameIdeasContext : DbContext
{
private ILoggerFactory LoggerFactory;
public GameIdeasContext(DbContextOptions<GameIdeasContext> option, ILoggerFactory loggerFactory)
: base(option)
{
LoggerFactory = loggerFactory;
}
public virtual DbSet<Game> Games { get; set; } = null!;
public virtual DbSet<User> Users { get; set; } = null!;
public virtual DbSet<Developer> Developers { get; set; } = null!;
public virtual DbSet<Platform> Platforms { get; set; } = null!;
public virtual DbSet<Property> Properties { get; set; } = null!;
public virtual DbSet<Publisher> Publishers { get; set; } = null!;
public virtual DbSet<Tag> Tags { get; set; } = null!;
public virtual DbSet<Game> Games { get; set; } = null!;
public virtual DbSet<GameDeveloper> GameDevelopers { get; set; } = null!;
public virtual DbSet<GamePlatform> GamePlatforms { get; set; } = null!;
public virtual DbSet<GameProperty> GameProperties { get; set; } = null!;
public virtual DbSet<GamePublisher> GamePublishers { get; set; } = null!;
public virtual DbSet<GameTag> GameTags { get; set; } = null!;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
@@ -24,6 +34,135 @@ public class GameIdeasContext : DbContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>(entity => {
entity.ToTable("User");
entity.Property(e => e.Id)
.UseIdentityByDefaultColumn()
.HasIdentityOptions(startValue: 100000);
});
modelBuilder.Entity<Developer>(entity => entity.ToTable("Developer"));
modelBuilder.Entity<Platform>(entity => entity.ToTable("Platform"));
modelBuilder.Entity<Property>(entity => entity.ToTable("Property"));
modelBuilder.Entity<Publisher>(entity => entity.ToTable("Publisher"));
modelBuilder.Entity<Tag>(entity => entity.ToTable("Tag"));
modelBuilder.Entity<Game>(entity =>
{
entity.ToTable("Game");
entity.HasIndex(e => e.CreationUserId);
entity.HasIndex(e => e.ModificationUserId);
entity.Property(e => e.CreationDate)
.HasDefaultValueSql("now()");
entity.Property(e => e.Id)
.UseIdentityByDefaultColumn()
.HasIdentityOptions(startValue: 100000);
entity.HasOne(d => d.CreationUser)
.WithMany(p => p.CreationGames)
.HasForeignKey(d => d.CreationUserId)
.OnDelete(DeleteBehavior.ClientSetNull);
entity.HasOne(d => d.ModificationUser)
.WithMany(p => p.ModificationGames)
.HasForeignKey(d => d.ModificationUserId)
.OnDelete(DeleteBehavior.ClientSetNull);
});
modelBuilder.Entity<GameDeveloper>(entity =>
{
entity.ToTable("GameDeveloper");
entity.HasKey(e => new { e.GameId, e.DeveloperId });
entity.HasOne(d => d.Game)
.WithMany(p => p.GameDevelopers)
.HasForeignKey(d => d.GameId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Developer)
.WithMany(p => p.GameDevelopers)
.HasForeignKey(d => d.DeveloperId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<GamePlatform>(entity =>
{
entity.ToTable("GamePlatform");
entity.HasKey(e => new { e.GameId, e.PlatformId });
entity.HasOne(d => d.Game)
.WithMany(p => p.GamePlatforms)
.HasForeignKey(d => d.GameId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Platform)
.WithMany(p => p.GamePlatforms)
.HasForeignKey(d => d.PlatformId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<GameProperty>(entity =>
{
entity.ToTable("GameProperty");
entity.HasKey(e => new { e.GameId, e.PropertyId });
entity.HasOne(d => d.Game)
.WithMany(p => p.GameProperties)
.HasForeignKey(d => d.GameId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Property)
.WithMany(p => p.GameProperties)
.HasForeignKey(d => d.PropertyId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<GamePublisher>(entity =>
{
entity.ToTable("GamePublisher");
entity.HasKey(e => new { e.GameId, e.PublisherId });
entity.HasOne(d => d.Game)
.WithMany(p => p.GamePublishers)
.HasForeignKey(d => d.GameId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Publisher)
.WithMany(p => p.GamePublishers)
.HasForeignKey(d => d.PublisherId)
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity<GameTag>(entity =>
{
entity.ToTable("GameTag");
entity.HasKey(e => new { e.GameId, e.TagId });
entity.HasOne(d => d.Game)
.WithMany(p => p.GameTags)
.HasForeignKey(d => d.GameId)
.OnDelete(DeleteBehavior.Cascade);
entity.HasOne(d => d.Tag)
.WithMany(p => p.GameTags)
.HasForeignKey(d => d.TagId)
.OnDelete(DeleteBehavior.Cascade);
});
base.OnModelCreating(modelBuilder);
}
}

View File

@@ -15,6 +15,7 @@ Action<DbContextOptionsBuilder<GameIdeasContext>> dbContextOptions = options =>
npgOption.CommandTimeout(60);
npgOption.MigrationsAssembly("GameIdeas.WebAPI");
});
};
// Add services to the container.