diff --git a/Dockerfile b/Dockerfile
index 70ba4bb20..f5634edcd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -17,7 +17,7 @@ WORKDIR /source
# Copy nuget project files.
COPY backend/Directory.Build.props ./
-COPY backend/*.sln ./
+COPY backend/*.slnx ./
# Copy the main source project files
COPY backend/src/*/*.csproj ./
@@ -79,7 +79,7 @@ RUN cp -a build /build/
#
# Stage 3, Build runtime
#
-FROM mcr.microsoft.com/dotnet/aspnet:10.0-bookworm-slim
+FROM mcr.microsoft.com/dotnet/aspnet:10.0
ARG SQUIDEX__RUNTIME__VERSION=7.0.0
diff --git a/backend/src/Squidex.Data.EntityFramework/Providers/MySql/App/Migrations/20260323154443_MigrateToNet10.Designer.cs b/backend/src/Squidex.Data.EntityFramework/Providers/MySql/App/Migrations/20260323154443_MigrateToNet10.Designer.cs
new file mode 100644
index 000000000..23b229988
--- /dev/null
+++ b/backend/src/Squidex.Data.EntityFramework/Providers/MySql/App/Migrations/20260323154443_MigrateToNet10.Designer.cs
@@ -0,0 +1,1628 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using NetTopologySuite.Geometries;
+using Squidex.Providers.MySql.App;
+
+#nullable disable
+
+namespace Squidex.Providers.MySql.App.Migrations
+{
+ [DbContext(typeof(MySqlAppDbContext))]
+ [Migration("20260323154443_MigrateToNet10")]
+ partial class MigrateToNet10
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "10.0.5")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasDatabaseName("RoleNameIndex");
+
+ b.ToTable("AspNetRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("ClaimType")
+ .HasColumnType("longtext");
+
+ b.Property("ClaimValue")
+ .HasColumnType("longtext");
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("AccessFailedCount")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("longtext");
+
+ b.Property("Email")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LockoutEnabled")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("datetime(6)");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("PasswordHash")
+ .HasColumnType("longtext");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("longtext");
+
+ b.Property("PhoneNumberConfirmed")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("SecurityStamp")
+ .HasColumnType("longtext");
+
+ b.Property("TwoFactorEnabled")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasDatabaseName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasDatabaseName("UserNameIndex");
+
+ b.ToTable("AspNetUsers", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("ClaimType")
+ .HasColumnType("longtext");
+
+ b.Property("ClaimValue")
+ .HasColumnType("longtext");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ProviderKey")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ProviderDisplayName")
+ .HasColumnType("longtext");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("RoleId")
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("LoginProvider")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Name")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Value")
+ .HasColumnType("longtext");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens", (string)null);
+ });
+
+ modelBuilder.Entity("OpenIddict.EntityFrameworkCore.Models.OpenIddictEntityFrameworkCoreAuthorization", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ApplicationId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ConcurrencyToken")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Properties")
+ .HasColumnType("longtext");
+
+ b.Property("Scopes")
+ .HasColumnType("longtext");
+
+ b.Property("Status")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Subject")
+ .HasMaxLength(400)
+ .HasColumnType("varchar(400)");
+
+ b.Property("Type")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ApplicationId", "Status", "Subject", "Type");
+
+ b.ToTable("OpenIddictAuthorizations", (string)null);
+ });
+
+ modelBuilder.Entity("OpenIddict.EntityFrameworkCore.Models.OpenIddictEntityFrameworkCoreToken", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("varchar(255)");
+
+ b.Property("ApplicationId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("AuthorizationId")
+ .HasColumnType("varchar(255)");
+
+ b.Property("ConcurrencyToken")
+ .IsConcurrencyToken()
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("CreationDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ExpirationDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Payload")
+ .HasColumnType("longtext");
+
+ b.Property("Properties")
+ .HasColumnType("longtext");
+
+ b.Property("RedemptionDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ReferenceId")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Status")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Subject")
+ .HasMaxLength(400)
+ .HasColumnType("varchar(400)");
+
+ b.Property("Type")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuthorizationId");
+
+ b.HasIndex("ReferenceId")
+ .IsUnique();
+
+ b.HasIndex("ApplicationId", "Status", "Subject", "Type");
+
+ b.ToTable("OpenIddictTokens", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.AI.EntityFramework.EFChatEntity", b =>
+ {
+ b.Property("Id")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("LastUpdated")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Version")
+ .IsConcurrencyToken()
+ .HasColumnType("char(36)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LastUpdated");
+
+ b.ToTable("Chats", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Assets.EntityFramework.EFAssetKeyValueEntity", b =>
+ {
+ b.Property("Key")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Expires")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Key");
+
+ b.HasIndex("Expires");
+
+ b.ToTable("AssetKeyValueStore_TusMetadata", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Apps.EFAppEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Document")
+ .HasColumnType("json");
+
+ b.Property("IndexedCreated")
+ .HasColumnType("datetime(6)")
+ .HasColumnName("Created");
+
+ b.Property("IndexedDeleted")
+ .HasColumnType("tinyint(1)")
+ .HasColumnName("Deleted");
+
+ b.Property("IndexedName")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasColumnName("Name");
+
+ b.Property("IndexedTeamId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("TeamId");
+
+ b.Property("IndexedUserIds")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasColumnName("UserIds");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.ToTable("States_App", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Assets.EFAssetEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("FileHash")
+ .HasColumnType("longtext");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("FileSize")
+ .HasColumnType("bigint");
+
+ b.Property("FileVersion")
+ .HasColumnType("bigint");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IndexedAppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IsProtected")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LastModifiedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Metadata")
+ .IsRequired()
+ .HasColumnType("json");
+
+ b.Property("MimeType")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ParentId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Slug")
+ .HasColumnType("longtext");
+
+ b.Property("Tags")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("varchar(1000)");
+
+ b.Property("TotalSize")
+ .HasColumnType("bigint");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.HasIndex("IndexedAppId", "Id");
+
+ b.ToTable("Assets");
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Assets.EFAssetFolderEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("FolderName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IndexedAppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LastModifiedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("ParentId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.HasIndex("IndexedAppId", "Id");
+
+ b.ToTable("AssetFolders");
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.EFContentCompleteEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Data")
+ .IsRequired()
+ .HasColumnType("json");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IndexedAppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IndexedSchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LastModifiedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("NewData")
+ .HasColumnType("json");
+
+ b.Property("NewStatus")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("ScheduleJob")
+ .HasColumnType("json");
+
+ b.Property("ScheduledAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("SchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("TranslationStatus")
+ .HasColumnType("json");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.ToTable("ContentsAll", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.EFContentPublishedEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Data")
+ .IsRequired()
+ .HasColumnType("json");
+
+ b.Property("Id")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IndexedAppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IndexedSchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("IsDeleted")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastModified")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LastModifiedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("NewData")
+ .HasColumnType("json");
+
+ b.Property("NewStatus")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("ScheduleJob")
+ .HasColumnType("json");
+
+ b.Property("ScheduledAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("SchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("TranslationStatus")
+ .HasColumnType("json");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.ToTable("ContentsPublished", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.EFContentTableEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("SchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AppId", "SchemaId")
+ .IsUnique();
+
+ b.ToTable("ContentTables", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.EFReferenceCompleteEntity", b =>
+ {
+ b.Property("AppId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("FromKey")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ToId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("FromSchema")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasDefaultValue("00000000-0000-0000-0000-000000000000");
+
+ b.HasKey("AppId", "FromKey", "ToId");
+
+ b.ToTable("ContentReferencesAll", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.EFReferencePublishedEntity", b =>
+ {
+ b.Property("AppId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("FromKey")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ToId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("FromSchema")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasDefaultValue("00000000-0000-0000-0000-000000000000");
+
+ b.HasKey("AppId", "FromKey", "ToId");
+
+ b.ToTable("ContentReferencesPublished", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.Text.EFTextIndexGeoEntity", b =>
+ {
+ b.Property("Id")
+ .HasMaxLength(400)
+ .HasColumnType("varchar(400)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ContentId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("GeoField")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("GeoObject")
+ .IsRequired()
+ .HasColumnType("geometry");
+
+ b.Property("SchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ServeAll")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ServePublished")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Stage")
+ .HasColumnType("tinyint unsigned");
+
+ b.HasKey("Id");
+
+ b.ToTable("Geos");
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.Text.EFTextIndexTextEntity", b =>
+ {
+ b.Property("Id")
+ .HasMaxLength(400)
+ .HasColumnType("varchar(400)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ContentId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("SchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ServeAll")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ServePublished")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Stage")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Texts")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.ToTable("Texts");
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.Text.EFTextIndexUserInfoEntity", b =>
+ {
+ b.Property("Id")
+ .HasMaxLength(400)
+ .HasColumnType("varchar(400)");
+
+ b.Property("AppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ContentId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("SchemaId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("ServeAll")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ServePublished")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Stage")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("UserInfoApiKey")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("UserInfoRole")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserInfoApiKey");
+
+ b.ToTable("UserInfos");
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Contents.Text.State.TextContentState", b =>
+ {
+ b.Property("UniqueContentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("State")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.HasKey("UniqueContentId");
+
+ b.ToTable("TextState", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.History.HistoryEvent", b =>
+ {
+ b.Property("Id")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Actor")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("Channel")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("EventType")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OwnerId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Parameters")
+ .IsRequired()
+ .HasColumnType("json");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("HistoryEvent");
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Rules.EFRuleEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Document")
+ .HasColumnType("json");
+
+ b.Property("IndexedAppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("AppId");
+
+ b.Property("IndexedDeleted")
+ .HasColumnType("tinyint(1)")
+ .HasColumnName("Deleted");
+
+ b.Property("IndexedId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("Id");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.ToTable("States_Rule", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Schemas.EFSchemaEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Document")
+ .HasColumnType("json");
+
+ b.Property("IndexedAppId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("AppId");
+
+ b.Property("IndexedDeleted")
+ .HasColumnType("tinyint(1)")
+ .HasColumnName("Deleted");
+
+ b.Property("IndexedId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("Id");
+
+ b.Property("IndexedName")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasColumnName("Name");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.ToTable("States_Schema", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Domain.Apps.Entities.Teams.EFTeamEntity", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Document")
+ .HasColumnType("json");
+
+ b.Property("IndexedAuthDomain")
+ .HasColumnType("longtext")
+ .HasColumnName("AuthDomain");
+
+ b.Property("IndexedDeleted")
+ .HasColumnType("tinyint(1)")
+ .HasColumnName("Deleted");
+
+ b.Property("IndexedUserIds")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasColumnName("UserIds");
+
+ b.Property("Version")
+ .HasColumnType("bigint");
+
+ b.HasKey("DocumentId");
+
+ b.ToTable("States_Team", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Events.EntityFramework.EFEventCommit", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)");
+
+ b.Property("EventStream")
+ .IsRequired()
+ .HasMaxLength(750)
+ .HasColumnType("varchar(750)");
+
+ b.Property("EventStreamOffset")
+ .HasColumnType("bigint");
+
+ b.PrimitiveCollection("Events")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("EventsCount")
+ .HasColumnType("bigint");
+
+ b.Property("Position")
+ .HasColumnType("bigint");
+
+ b.Property("Timestamp")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("EventStream", "EventStreamOffset")
+ .IsUnique();
+
+ b.HasIndex("EventStream", "Position");
+
+ b.HasIndex("EventStream", "Timestamp");
+
+ b.ToTable("Events");
+ });
+
+ modelBuilder.Entity("Squidex.Events.EntityFramework.EFPosition", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("bigint");
+
+ b.Property("Position")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.ToTable("EventPosition");
+ });
+
+ modelBuilder.Entity("Squidex.Flows.EntityFramework.EFCronJobEntity", b =>
+ {
+ b.Property("Id")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Data")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("DueTime")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DueTime");
+
+ b.ToTable("CronJobs", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Flows.EntityFramework.EFFlowStateEntity", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("char(36)");
+
+ b.Property("Created")
+ .HasColumnType("datetime(6)");
+
+ b.Property("DefinitionId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("DueTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("OwnerId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("SchedulePartition")
+ .HasColumnType("int");
+
+ b.Property("State")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DueTime", "SchedulePartition");
+
+ b.ToTable("Flows", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Infrastructure.Caching.EFCacheEntity", b =>
+ {
+ b.Property("Key")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Expires")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("longblob");
+
+ b.HasKey("Key");
+
+ b.ToTable("Cache", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Infrastructure.Log.EFRequestEntity", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Key")
+ .IsRequired()
+ .HasColumnType("varchar(255)");
+
+ b.Property("Properties")
+ .IsRequired()
+ .HasColumnType("json");
+
+ b.Property("Timestamp")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Key");
+
+ b.ToTable("Requests", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Infrastructure.Migrations.EFMigrationEntity", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("int");
+
+ b.Property("IsLocked")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Version")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Migrations", (string)null);
+ });
+
+ modelBuilder.Entity("Squidex.Infrastructure.States.EFState", b =>
+ {
+ b.Property("DocumentId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("Document")
+ .HasColumnType("json");
+
+ b.Property