56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
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<long>, IEntityTypeConfiguration<UserPasskey>
|
|
{
|
|
#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<UserPasskey> 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<UserPasskey, IdentityPasskeyData> builder)
|
|
{
|
|
builder.ToJson("data");
|
|
}
|
|
} |