52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using MultiShop.Models;
|
|
using IdentityServer4.EntityFramework.Options;
|
|
using Microsoft.AspNetCore.ApiAuthorization.IdentityServer;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Options;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Text.Json;
|
|
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
|
|
|
namespace MultiShop.Data
|
|
{
|
|
public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>
|
|
{
|
|
public ApplicationDbContext(
|
|
DbContextOptions options,
|
|
IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
|
|
{
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder) {
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
modelBuilder.Entity<ResultsPreferences>()
|
|
.Property(e => e.Order)
|
|
.HasConversion(
|
|
v => JsonSerializer.Serialize(v, null),
|
|
v => JsonSerializer.Deserialize<List<ResultsPreferences.Category>>(v, null),
|
|
new ValueComparer<IList<ResultsPreferences.Category>>(
|
|
(a, b) => a.SequenceEqual(b),
|
|
c => c.Aggregate(0, (a, v) => HashCode.Combine(a, v.GetHashCode())),
|
|
c => (IList<ResultsPreferences.Category>) c.ToList()
|
|
)
|
|
);
|
|
|
|
modelBuilder.Entity<SearchOutline>()
|
|
.Property(e => e.ShopStates)
|
|
.HasConversion(
|
|
v => JsonSerializer.Serialize(v, null),
|
|
v => JsonSerializer.Deserialize<SearchOutline.ShopToggler>(v, null),
|
|
new ValueComparer<SearchOutline.ShopToggler>(
|
|
(a, b) => a.Equals(b),
|
|
c => c.GetHashCode(),
|
|
c => c.Clone()
|
|
)
|
|
);
|
|
}
|
|
}
|
|
}
|