Add MySql EntityFramework Provider
This commit is contained in:
parent
57c8fc6bcd
commit
8f429a5cc1
|
|
@ -0,0 +1,16 @@
|
|||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Elsa.Persistence.EntityFramework.MySql
|
||||
{
|
||||
public static class DbContextOptionsBuilderExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Configures the context to use MySql
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
/// <param name="connectionString"></param>
|
||||
/// <returns></returns>
|
||||
public static DbContextOptionsBuilder UseMySql(this DbContextOptionsBuilder builder, string connectionString) =>
|
||||
builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString), db => db.MigrationsAssembly(typeof(MySqlElsaContextFactory).Assembly.GetName().Name));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<Import Project="..\..\..\..\common.props" />
|
||||
<Import Project="..\..\..\..\configureawait.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<Description>
|
||||
Elsa is a set of workflow libraries and tools that enable lean and mean workflowing capabilities in any .NET Core application.
|
||||
This package provides Entity Framework Core migrations for the MySql database provider.
|
||||
</Description>
|
||||
<PackageTags>elsa, workflows, efcore, mysql, mariadb</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Elsa.Persistence.EntityFramework.Core\Elsa.Persistence.EntityFramework.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.0-beta.1" />
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<ConfigureAwait />
|
||||
</Weavers>
|
||||
|
|
@ -0,0 +1,288 @@
|
|||
// <auto-generated />
|
||||
using System;
|
||||
using Elsa.Persistence.EntityFramework.Core;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
namespace Elsa.Persistence.EntityFramework.MySql.Migrations
|
||||
{
|
||||
[DbContext(typeof(ElsaContext))]
|
||||
[Migration("20210423213120_InitialContext")]
|
||||
partial class InitialContext
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64)
|
||||
.HasAnnotation("ProductVersion", "5.0.5");
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.Bookmark", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityType")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Hash")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Model")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ModelType")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("WorkflowInstanceId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ActivityId")
|
||||
.HasDatabaseName("IX_Bookmark_ActivityId");
|
||||
|
||||
b.HasIndex("ActivityType")
|
||||
.HasDatabaseName("IX_Bookmark_ActivityType");
|
||||
|
||||
b.HasIndex("Hash")
|
||||
.HasDatabaseName("IX_Bookmark_Hash");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_Bookmark_TenantId");
|
||||
|
||||
b.HasIndex("WorkflowInstanceId")
|
||||
.HasDatabaseName("IX_Bookmark_WorkflowInstanceId");
|
||||
|
||||
b.HasIndex("ActivityType", "TenantId", "Hash")
|
||||
.HasDatabaseName("IX_Bookmark_ActivityType_TenantId_Hash");
|
||||
|
||||
b.ToTable("Bookmarks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.WorkflowDefinition", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("DefinitionId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<bool>("DeleteCompletedInstances")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("Description")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("DisplayName")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<bool>("IsLatest")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("IsPublished")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("IsSingleton")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("PersistenceBehavior")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("Version")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("IsLatest")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_IsLatest");
|
||||
|
||||
b.HasIndex("IsPublished")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_IsPublished");
|
||||
|
||||
b.HasIndex("Name")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_Name");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_TenantId");
|
||||
|
||||
b.HasIndex("Version")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_Version");
|
||||
|
||||
b.HasIndex("DefinitionId", "Version")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_DefinitionId_VersionId");
|
||||
|
||||
b.ToTable("WorkflowDefinitions");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.WorkflowExecutionLogRecord", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityType")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("EventName")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Message")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Source")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset>("Timestamp")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("WorkflowInstanceId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ActivityId")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
|
||||
|
||||
b.HasIndex("ActivityType")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId");
|
||||
|
||||
b.HasIndex("Timestamp")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
|
||||
|
||||
b.HasIndex("WorkflowInstanceId")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
|
||||
|
||||
b.ToTable("WorkflowExecutionLogRecords");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.WorkflowInstance", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset?>("CancelledAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("ContextId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ContextType")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("CorrelationId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("DefinitionId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset?>("FaultedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTimeOffset?>("FinishedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTimeOffset?>("LastExecutedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("Version")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("WorkflowStatus")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ContextId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_ContextId");
|
||||
|
||||
b.HasIndex("ContextType")
|
||||
.HasDatabaseName("IX_WorkflowInstance_ContextType");
|
||||
|
||||
b.HasIndex("CorrelationId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_CorrelationId");
|
||||
|
||||
b.HasIndex("CreatedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_CreatedAt");
|
||||
|
||||
b.HasIndex("DefinitionId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_DefinitionId");
|
||||
|
||||
b.HasIndex("FaultedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_FaultedAt");
|
||||
|
||||
b.HasIndex("FinishedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_FinishedAt");
|
||||
|
||||
b.HasIndex("LastExecutedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_LastExecutedAt");
|
||||
|
||||
b.HasIndex("Name")
|
||||
.HasDatabaseName("IX_WorkflowInstance_Name");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_TenantId");
|
||||
|
||||
b.HasIndex("WorkflowStatus")
|
||||
.HasDatabaseName("IX_WorkflowInstance_WorkflowStatus");
|
||||
|
||||
b.HasIndex("WorkflowStatus", "DefinitionId", "Version")
|
||||
.HasDatabaseName("IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version");
|
||||
|
||||
b.ToTable("WorkflowInstances");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,260 @@
|
|||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace Elsa.Persistence.EntityFramework.MySql.Migrations
|
||||
{
|
||||
public partial class InitialContext : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterDatabase()
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Bookmarks",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
TenantId = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
Hash = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
Model = table.Column<string>(type: "longtext", nullable: false),
|
||||
ModelType = table.Column<string>(type: "longtext", nullable: false),
|
||||
ActivityType = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
ActivityId = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
WorkflowInstanceId = table.Column<string>(type: "varchar(255)", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Bookmarks", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "WorkflowDefinitions",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
DefinitionId = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
TenantId = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
Name = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
DisplayName = table.Column<string>(type: "longtext", nullable: true),
|
||||
Description = table.Column<string>(type: "longtext", nullable: true),
|
||||
Version = table.Column<int>(type: "int", nullable: false),
|
||||
IsSingleton = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||
PersistenceBehavior = table.Column<int>(type: "int", nullable: false),
|
||||
DeleteCompletedInstances = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||
IsPublished = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||
IsLatest = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||
Data = table.Column<string>(type: "longtext", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_WorkflowDefinitions", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "WorkflowExecutionLogRecords",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
TenantId = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
WorkflowInstanceId = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
ActivityId = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
ActivityType = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
Timestamp = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: false),
|
||||
EventName = table.Column<string>(type: "longtext", nullable: true),
|
||||
Message = table.Column<string>(type: "longtext", nullable: true),
|
||||
Source = table.Column<string>(type: "longtext", nullable: true),
|
||||
Data = table.Column<string>(type: "longtext", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_WorkflowExecutionLogRecords", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "WorkflowInstances",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
DefinitionId = table.Column<string>(type: "varchar(255)", nullable: false),
|
||||
TenantId = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
Version = table.Column<int>(type: "int", nullable: false),
|
||||
WorkflowStatus = table.Column<int>(type: "int", nullable: false),
|
||||
CorrelationId = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
ContextType = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
ContextId = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
Name = table.Column<string>(type: "varchar(255)", nullable: true),
|
||||
CreatedAt = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: false),
|
||||
LastExecutedAt = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: true),
|
||||
FinishedAt = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: true),
|
||||
CancelledAt = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: true),
|
||||
FaultedAt = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: true),
|
||||
Data = table.Column<string>(type: "longtext", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_WorkflowInstances", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Bookmark_ActivityId",
|
||||
table: "Bookmarks",
|
||||
column: "ActivityId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Bookmark_ActivityType",
|
||||
table: "Bookmarks",
|
||||
column: "ActivityType");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Bookmark_ActivityType_TenantId_Hash",
|
||||
table: "Bookmarks",
|
||||
columns: new[] { "ActivityType", "TenantId", "Hash" });
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Bookmark_Hash",
|
||||
table: "Bookmarks",
|
||||
column: "Hash");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Bookmark_TenantId",
|
||||
table: "Bookmarks",
|
||||
column: "TenantId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Bookmark_WorkflowInstanceId",
|
||||
table: "Bookmarks",
|
||||
column: "WorkflowInstanceId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowDefinition_DefinitionId_VersionId",
|
||||
table: "WorkflowDefinitions",
|
||||
columns: new[] { "DefinitionId", "Version" });
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowDefinition_IsLatest",
|
||||
table: "WorkflowDefinitions",
|
||||
column: "IsLatest");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowDefinition_IsPublished",
|
||||
table: "WorkflowDefinitions",
|
||||
column: "IsPublished");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowDefinition_Name",
|
||||
table: "WorkflowDefinitions",
|
||||
column: "Name");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowDefinition_TenantId",
|
||||
table: "WorkflowDefinitions",
|
||||
column: "TenantId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowDefinition_Version",
|
||||
table: "WorkflowDefinitions",
|
||||
column: "Version");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowExecutionLogRecord_ActivityId",
|
||||
table: "WorkflowExecutionLogRecords",
|
||||
column: "ActivityId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowExecutionLogRecord_ActivityType",
|
||||
table: "WorkflowExecutionLogRecords",
|
||||
column: "ActivityType");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowExecutionLogRecord_TenantId",
|
||||
table: "WorkflowExecutionLogRecords",
|
||||
column: "TenantId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowExecutionLogRecord_Timestamp",
|
||||
table: "WorkflowExecutionLogRecords",
|
||||
column: "Timestamp");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowExecutionLogRecord_WorkflowInstanceId",
|
||||
table: "WorkflowExecutionLogRecords",
|
||||
column: "WorkflowInstanceId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_ContextId",
|
||||
table: "WorkflowInstances",
|
||||
column: "ContextId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_ContextType",
|
||||
table: "WorkflowInstances",
|
||||
column: "ContextType");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_CorrelationId",
|
||||
table: "WorkflowInstances",
|
||||
column: "CorrelationId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_CreatedAt",
|
||||
table: "WorkflowInstances",
|
||||
column: "CreatedAt");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_DefinitionId",
|
||||
table: "WorkflowInstances",
|
||||
column: "DefinitionId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_FaultedAt",
|
||||
table: "WorkflowInstances",
|
||||
column: "FaultedAt");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_FinishedAt",
|
||||
table: "WorkflowInstances",
|
||||
column: "FinishedAt");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_LastExecutedAt",
|
||||
table: "WorkflowInstances",
|
||||
column: "LastExecutedAt");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_Name",
|
||||
table: "WorkflowInstances",
|
||||
column: "Name");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_TenantId",
|
||||
table: "WorkflowInstances",
|
||||
column: "TenantId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_WorkflowStatus",
|
||||
table: "WorkflowInstances",
|
||||
column: "WorkflowStatus");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version",
|
||||
table: "WorkflowInstances",
|
||||
columns: new[] { "WorkflowStatus", "DefinitionId", "Version" });
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "Bookmarks");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "WorkflowDefinitions");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "WorkflowExecutionLogRecords");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "WorkflowInstances");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
// <auto-generated />
|
||||
using System;
|
||||
using Elsa.Persistence.EntityFramework.Core;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
namespace Elsa.Persistence.EntityFramework.MySql.Migrations
|
||||
{
|
||||
[DbContext(typeof(ElsaContext))]
|
||||
partial class ElsaContextModelSnapshot : ModelSnapshot
|
||||
{
|
||||
protected override void BuildModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64)
|
||||
.HasAnnotation("ProductVersion", "5.0.5");
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.Bookmark", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityType")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Hash")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Model")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ModelType")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("WorkflowInstanceId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ActivityId")
|
||||
.HasDatabaseName("IX_Bookmark_ActivityId");
|
||||
|
||||
b.HasIndex("ActivityType")
|
||||
.HasDatabaseName("IX_Bookmark_ActivityType");
|
||||
|
||||
b.HasIndex("Hash")
|
||||
.HasDatabaseName("IX_Bookmark_Hash");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_Bookmark_TenantId");
|
||||
|
||||
b.HasIndex("WorkflowInstanceId")
|
||||
.HasDatabaseName("IX_Bookmark_WorkflowInstanceId");
|
||||
|
||||
b.HasIndex("ActivityType", "TenantId", "Hash")
|
||||
.HasDatabaseName("IX_Bookmark_ActivityType_TenantId_Hash");
|
||||
|
||||
b.ToTable("Bookmarks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.WorkflowDefinition", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("DefinitionId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<bool>("DeleteCompletedInstances")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("Description")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("DisplayName")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<bool>("IsLatest")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("IsPublished")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("IsSingleton")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("PersistenceBehavior")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("Version")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("IsLatest")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_IsLatest");
|
||||
|
||||
b.HasIndex("IsPublished")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_IsPublished");
|
||||
|
||||
b.HasIndex("Name")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_Name");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_TenantId");
|
||||
|
||||
b.HasIndex("Version")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_Version");
|
||||
|
||||
b.HasIndex("DefinitionId", "Version")
|
||||
.HasDatabaseName("IX_WorkflowDefinition_DefinitionId_VersionId");
|
||||
|
||||
b.ToTable("WorkflowDefinitions");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.WorkflowExecutionLogRecord", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ActivityType")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("EventName")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Message")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Source")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset>("Timestamp")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("WorkflowInstanceId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ActivityId")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityId");
|
||||
|
||||
b.HasIndex("ActivityType")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_ActivityType");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_TenantId");
|
||||
|
||||
b.HasIndex("Timestamp")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_Timestamp");
|
||||
|
||||
b.HasIndex("WorkflowInstanceId")
|
||||
.HasDatabaseName("IX_WorkflowExecutionLogRecord_WorkflowInstanceId");
|
||||
|
||||
b.ToTable("WorkflowExecutionLogRecords");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Elsa.Models.WorkflowInstance", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset?>("CancelledAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("ContextId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ContextType")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("CorrelationId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset>("CreatedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("Data")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("DefinitionId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<DateTimeOffset?>("FaultedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTimeOffset?>("FinishedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<DateTimeOffset?>("LastExecutedAt")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("TenantId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("Version")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("WorkflowStatus")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ContextId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_ContextId");
|
||||
|
||||
b.HasIndex("ContextType")
|
||||
.HasDatabaseName("IX_WorkflowInstance_ContextType");
|
||||
|
||||
b.HasIndex("CorrelationId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_CorrelationId");
|
||||
|
||||
b.HasIndex("CreatedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_CreatedAt");
|
||||
|
||||
b.HasIndex("DefinitionId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_DefinitionId");
|
||||
|
||||
b.HasIndex("FaultedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_FaultedAt");
|
||||
|
||||
b.HasIndex("FinishedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_FinishedAt");
|
||||
|
||||
b.HasIndex("LastExecutedAt")
|
||||
.HasDatabaseName("IX_WorkflowInstance_LastExecutedAt");
|
||||
|
||||
b.HasIndex("Name")
|
||||
.HasDatabaseName("IX_WorkflowInstance_Name");
|
||||
|
||||
b.HasIndex("TenantId")
|
||||
.HasDatabaseName("IX_WorkflowInstance_TenantId");
|
||||
|
||||
b.HasIndex("WorkflowStatus")
|
||||
.HasDatabaseName("IX_WorkflowInstance_WorkflowStatus");
|
||||
|
||||
b.HasIndex("WorkflowStatus", "DefinitionId", "Version")
|
||||
.HasDatabaseName("IX_WorkflowInstance_WorkflowStatus_DefinitionId_Version");
|
||||
|
||||
b.ToTable("WorkflowInstances");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using Elsa.Persistence.EntityFramework.Core;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
using Pomelo.EntityFrameworkCore.MySql.Infrastructure;
|
||||
namespace Elsa.Persistence.EntityFramework.MySql
|
||||
{
|
||||
public class MySqlElsaContextFactory : IDesignTimeDbContextFactory<ElsaContext>
|
||||
{
|
||||
public ElsaContext CreateDbContext(string[] args)
|
||||
{
|
||||
var builder = new DbContextOptionsBuilder<ElsaContext>();
|
||||
var connectionString = args.Any() ? args[0] : throw new InvalidOperationException("Please specify a connection string. E.g. dotnet ef database update -- \"Server=localhost;Port=3306;Database=elsa;User=root;Password=password\"");
|
||||
builder.UseMySql(
|
||||
connectionString,
|
||||
ServerVersion.AutoDetect(args[0]),
|
||||
db => db.MigrationsAssembly(typeof(MySqlElsaContextFactory).Assembly.GetName().Name));
|
||||
return new ElsaContext(builder.Options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
### Usage
|
||||
|
||||
```
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
|
||||
services.AddElsa(elsa =>
|
||||
elsa
|
||||
.AddWorkflow<MyWorkflow>()
|
||||
.UseEntityFrameworkPersistence(
|
||||
contextOptions =>
|
||||
{
|
||||
contextOptions.UseMySql(
|
||||
"Server=localhost;Port=3306;Database=elsa;User=root;Password=password;");
|
||||
},
|
||||
autoRunMigrations: true)
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
### Entity Framework Core Commands
|
||||
|
||||
These commands are used by the package developer.
|
||||
|
||||
**Generate Migrations**
|
||||
|
||||
```
|
||||
dotnet ef migrations add Initial
|
||||
dotnet ef migrations add Update1
|
||||
dotnet ef migrations add Update2
|
||||
```
|
||||
|
||||
etc..
|
||||
|
||||
Optionally, specify a connection string:
|
||||
|
||||
```
|
||||
dotnet ef migrations add Initial -- "{connection string}"
|
||||
dotnet ef migrations add Update1 -- "{connection string}"
|
||||
dotnet ef migrations add Update2 -- "{connection string}"
|
||||
```
|
||||
|
||||
**Apply Migrations**
|
||||
|
||||
|
||||
This
|
||||
|
||||
`dotnet ef database update -- "{connection string}"`
|
||||
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.EntityFramework\Elsa.Persistence.EntityFramework.PostgreSql\Elsa.Persistence.EntityFramework.PostgreSql.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.EntityFramework\Elsa.Persistence.EntityFramework.Sqlite\Elsa.Persistence.EntityFramework.Sqlite.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.EntityFramework\Elsa.Persistence.EntityFramework.SqlServer\Elsa.Persistence.EntityFramework.SqlServer.csproj" />
|
||||
<ProjectReference Include="..\..\..\persistence\Elsa.Persistence.EntityFramework\Elsa.Persistence.EntityFramework.MySql\Elsa.Persistence.EntityFramework.MySql.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@ namespace Elsa.Samples.Persistence.EntityFramework
|
|||
|
||||
//ef.UsePostgreSql("Server=127.0.0.1;Port=5432;Database=elsa;User Id=postgres;Password=password;");
|
||||
|
||||
//ef.UseMySql("Server=localhost;Port=3306;Database=elsa;User=root;Password=password;");
|
||||
|
||||
ef.UseSqlServer("Server=localhost;Database=Elsa;Integrated Security=true");
|
||||
})
|
||||
.AddConsoleActivities()
|
||||
|
|
|
|||
Loading…
Reference in a new issue