我们正在使用 ASP.NET MVC Core 开发一个 Web 应用程序,并使用 EntityFramework Core 进行数据访问。.net 核心版本是 2.2。现在,我们正在尝试将 SQL Server 2016 中的 MemoryOptimizedTables 用于我们现有的表。
我在 OnModelCreating 方法中添加了以下行,
modelBuilder.Entity<MailLog>().ForSqlServerIsMemoryOptimized();
然后我执行Add-Migration
它导致以下迁移文件。
public partial class DataModel_v0711 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropPrimaryKey(
name: "PK_Core_MailLogs",
table: "Core_MailLogs");
migrationBuilder.AlterDatabase()
.Annotation("SqlServer:MemoryOptimized", true);
migrationBuilder.AlterTable(
name: "Core_MailLogs")
.Annotation("SqlServer:MemoryOptimized", true);
migrationBuilder.AddPrimaryKey(
name: "PK_Core_MailLogs",
table: "Core_MailLogs",
column: "Id")
.Annotation("SqlServer:Clustered", false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropPrimaryKey(
name: "PK_Core_MailLogs",
table: "Core_MailLogs");
migrationBuilder.AlterDatabase()
.OldAnnotation("SqlServer:MemoryOptimized", true);
migrationBuilder.AlterTable(
name: "Core_MailLogs")
.OldAnnotation("SqlServer:MemoryOptimized", true);
migrationBuilder.AddPrimaryKey(
name: "PK_Core_MailLogs",
table: "Core_MailLogs",
column: "Id");
}
}
我执行了更新数据库命令。我尝试使用空数据库。我尝试使用以下命令获取迁移脚本。
dotnet ef migrations script --idempotent -o c:\test\migrate2_1.sql --project EntityFrameworkCore.csproj --startup-project Web.Mvc.csproj
每次我收到以下错误。
System.InvalidOperationException:要在表上或表外设置内存优化,需要删除并重新创建。 在 Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(AlterTableOperation 操作,IModel 模型,MigrationCommandListBuilder 生成器) 在 Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(MigrationOperation 操作,IModel 模型,MigrationCommandListBuilder 生成器) 在 Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList`1 操作,IModel 模型) 在 Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(IReadOnlyList`1 操作,IModel 模型) 在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpSql(迁移迁移) 在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateScript(String fromMigration,String toMigration,布尔幂等) 在 Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.ScriptMigration(字符串 fromMigration,字符串 toMigration,布尔幂等,字符串 contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScriptMigration.c__DisplayClass0_1.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作动作) 要在表上或表外设置内存优化,需要删除并重新创建表。
谢谢。