protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity <Clan>( builder => { builder.ToTable("Clan"); builder.Property(clan => clan.Id).HasConversion(clanId => clanId.ToGuid(), value => ClanId.FromGuid(value)).IsRequired().ValueGeneratedNever(); builder.Property(clan => clan.Name).IsRequired(); builder.Property(clan => clan.Summary).IsRequired(false); builder.Property(clan => clan.OwnerId).HasConversion(invitationId => invitationId.ToGuid(), value => UserId.FromGuid(value)).IsRequired(); builder.Ignore(clan => clan.Deleted); builder.HasMany(clan => clan.Members).WithOne().HasForeignKey(member => member.ClanId); builder.HasKey(clan => clan.Id); }); modelBuilder.Entity <Clan>( builder => { builder.ToTable("Clan"); builder.Property(clan => clan.Id).HasConversion(clanId => clanId.ToGuid(), value => ClanId.FromGuid(value)).IsRequired().ValueGeneratedNever(); builder.Property(clan => clan.Name).IsRequired(); builder.Property(clan => clan.Summary).IsRequired(false); builder.Property(clan => clan.OwnerId).HasConversion(invitationId => invitationId.ToGuid(), value => UserId.FromGuid(value)).IsRequired(); builder.HasMany(clan => clan.Members).WithOne().HasForeignKey(member => member.ClanId); builder.HasKey(clan => clan.Id); }); modelBuilder.Entity <Member>( builder => { builder.ToTable("Member"); builder.Property(member => member.Id).HasConversion(memberId => memberId.ToGuid(), value => MemberId.FromGuid(value)).IsRequired().ValueGeneratedNever(); builder.Property(member => member.UserId).HasConversion(userId => userId.ToGuid(), value => UserId.FromGuid(value)).IsRequired(); builder.Property(member => member.ClanId).HasConversion(clanId => clanId.ToGuid(), value => ClanId.FromGuid(value)).IsRequired(); builder.HasKey(member => member.Id); }); modelBuilder.Entity <Candidature>( builder => { builder.ToTable("Candidature"); builder.Property(candidature => candidature.Id) .HasConversion(candidatureId => candidatureId.ToGuid(), value => CandidatureId.FromGuid(value)) .IsRequired().ValueGeneratedNever(); builder.Property(candidature => candidature.UserId).HasConversion(userId => userId.ToGuid(), value => UserId.FromGuid(value)).IsRequired(); builder.Property(candidature => candidature.ClanId).HasConversion(clanId => clanId.ToGuid(), value => ClanId.FromGuid(value)).IsRequired(); builder.HasKey(candidature => candidature.Id); }); modelBuilder.Entity <Invitation>( builder => { builder.ToTable("Invitation"); builder.Property(invitation => invitation.Id) .HasConversion(invitationId => invitationId.ToGuid(), value => InvitationId.FromGuid(value)) .IsRequired().ValueGeneratedNever(); builder.Property(invitation => invitation.UserId).HasConversion(userId => userId.ToGuid(), value => UserId.FromGuid(value)).IsRequired(); builder.Property(invitation => invitation.ClanId).HasConversion(clanId => clanId.ToGuid(), value => ClanId.FromGuid(value)).IsRequired(); builder.HasKey(invitation => invitation.Id); }); modelBuilder.Entity <Division>( builder => { builder.ToTable("Division"); builder.Property(division => division.Id) .HasConversion(divisionId => divisionId.ToGuid(), value => DivisionId.FromGuid(value)) .IsRequired().ValueGeneratedNever(); builder.Property(division => division.Name).IsRequired(); builder.Property(division => division.Description).IsRequired(false); builder.Property(division => division.ClanId).HasConversion(clanId => clanId.ToGuid(), value => ClanId.FromGuid(value)).IsRequired(); builder.Ignore(division => division.Members); builder.HasKey(division => division.Id); }); }