public virtual void Detects_incompatible_memory_optimized_shared_table() { var modelBuilder = CreateConventionalModelBuilder(); modelBuilder.Entity <A>().HasOne <B>().WithOne().IsRequired().HasForeignKey <A>(a => a.Id).HasPrincipalKey <B>(b => b.Id); modelBuilder.Entity <A>().ToTable("Table").ForMySqlIsMemoryOptimized(); modelBuilder.Entity <B>().ToTable("Table"); VerifyError( MySqlStrings.IncompatibleTableMemoryOptimizedMismatch("Table", nameof(A), nameof(B), nameof(A), nameof(B)), modelBuilder.Model); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> protected override void ValidateSharedTableCompatibility( IReadOnlyList <IEntityType> mappedTypes, string tableName) { var firstMappedType = mappedTypes[0]; var isMemoryOptimized = firstMappedType.MySql().IsMemoryOptimized; foreach (var otherMappedType in mappedTypes.Skip(1)) { if (isMemoryOptimized != otherMappedType.MySql().IsMemoryOptimized) { throw new InvalidOperationException( MySqlStrings.IncompatibleTableMemoryOptimizedMismatch( tableName, firstMappedType.DisplayName(), otherMappedType.DisplayName(), isMemoryOptimized ? firstMappedType.DisplayName() : otherMappedType.DisplayName(), !isMemoryOptimized ? firstMappedType.DisplayName() : otherMappedType.DisplayName())); } } base.ValidateSharedTableCompatibility(mappedTypes, tableName); }