[Table(nameof(Workout))]
public class Workout
{
[Key]
public Guid Id { get; set; }
// Other properties
public ICollection<Exercise> Exercises { get; } = new List<Exercise>();
}
[Table(nameof(Exercise))]
public class Exercise
{
[Key]
public Guid Id { get; set; }
// Relationship with ExerciseVariant
public Guid ExerciseVariantId { get; set; } // Foreign key
public ExerciseVariant ExerciseVariant { get; set; } = null!; // Navigation property
// Relationship with Workout
public Guid? WorkoutId { get; set; }
public Workout? Workout { get; set; }
// Other properties
}
[Table(nameof(ExerciseVariant))]
public class ExerciseVariant
{
[Key]
public Guid Id { get; set; }
public ICollection<Exercise> Exercises { get; } = new List<Exercise>();
// Other properties
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Configure relationships
modelBuilder.Entity<Exercise>()
.HasOne(e => e.ExerciseVariant)
.WithMany(ev => ev.Exercises)
.HasForeignKey(e => e.ExerciseVariantId);
// Workouts
modelBuilder.Entity<Workout>()
.HasMany(o => o.Exercises)
.WithOne(o => o.Workout)
.HasForeignKey(o => o.WorkoutId)
.OnDelete(DeleteBehavior.Cascade);
base.OnModelCreating(modelBuilder);
}
[Table(nameof(Workout))]
public class Workout
{
[Key]
public Guid Id { get; set; }
// Other properties
public ICollection<Exercise> Exercises { get; } = new List<Exercise>();
}
[Table(nameof(Exercise))]
public class Exercise
{
[Key]
public Guid Id { get; set; }
// Relationship with ExerciseVariant
public Guid ExerciseVariantId { get; set; } // Foreign key
public ExerciseVariant ExerciseVariant { get; set; } = null!; // Navigation property
// Relationship with Workout
public Guid? WorkoutId { get; set; }
public Workout? Workout { get; set; }
// Other properties
}
[Table(nameof(ExerciseVariant))]
public class ExerciseVariant
{
[Key]
public Guid Id { get; set; }
public ICollection<Exercise> Exercises { get; } = new List<Exercise>();
// Other properties
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Configure relationships
modelBuilder.Entity<Exercise>()
.HasOne(e => e.ExerciseVariant)
.WithMany(ev => ev.Exercises)
.HasForeignKey(e => e.ExerciseVariantId);
// Workouts
modelBuilder.Entity<Workout>()
.HasMany(o => o.Exercises)
.WithOne(o => o.Workout)
.HasForeignKey(o => o.WorkoutId)
.OnDelete(DeleteBehavior.Cascade);
base.OnModelCreating(modelBuilder);
}