using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace SoaFE.Portal.Data.Models; public sealed class UserPasskey : IdentityUserPasskey, IEntityTypeConfiguration { #region Scalar Properties [MemberNotNull(nameof(User))] public override required long UserId { get; set; } #endregion #region Navigation Properties public User User { get; internal set; } #endregion public void Configure(EntityTypeBuilder builder) { // Configure Table builder.ToTable("user_passkey"); builder.HasKey(e => new { e.UserId, e.CredentialId }) .HasName("pk_user_passkey"); builder.HasIndex(e => e.UserId) .HasDatabaseName("ix_user_passkey_user_key"); // Configure Columns var order = 0; builder.Property(e => e.UserId) .HasColumnName("user_key") .HasColumnOrder(order++); builder.Property(e => e.CredentialId) .HasMaxLength(256) .IsUnicode() .HasColumnName("credential_id") .HasColumnOrder(order++); // Configure Relationships builder.OwnsOne(e => e.Data, Configure); } internal static void Configure(OwnedNavigationBuilder builder) { builder.ToJson("data"); } }