Update EF provider

This commit is contained in:
Sipke Schoorstra 2020-01-18 15:35:37 +01:00
parent 6a6edde7de
commit 26ee6b10a7
5 changed files with 36 additions and 12 deletions

View file

@ -54,6 +54,7 @@ namespace Elsa.Persistence.EntityFrameworkCore.DbContexts
ConfigureActivityDefinition(modelBuilder);
ConfigureActivityInstance(modelBuilder);
ConfigureBlockingActivity(modelBuilder);
ConfigureScheduledActivity(modelBuilder);
ConfigureConnectionDefinition(modelBuilder);
}
@ -78,6 +79,7 @@ namespace Elsa.Persistence.EntityFrameworkCore.DbContexts
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<ActivityDefinitionEntity>(DbContextCustomSchema));
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<ActivityInstanceEntity>(DbContextCustomSchema));
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<BlockingActivityEntity>(DbContextCustomSchema));
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<ScheduledActivityEntity>(DbContextCustomSchema));
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<ConnectionDefinitionEntity>(DbContextCustomSchema));
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<WorkflowDefinitionVersionEntity>(DbContextCustomSchema));
modelBuilder.ApplyConfiguration(new SchemaEntityTypeConfiguration<WorkflowInstanceEntity>(DbContextCustomSchema));
@ -128,11 +130,8 @@ namespace Elsa.Persistence.EntityFrameworkCore.DbContexts
.WithOne(x => x.WorkflowInstance);
entity
.Property(x => x.ScheduledActivities)
.HasConversion(
x => Serialize(x),
x => Deserialize<Stack<string>>(x)
);
.HasMany(x => x.ScheduledActivities)
.WithOne(x => x.WorkflowInstance);
}
private void ConfigureActivityDefinition(ModelBuilder modelBuilder)
@ -143,7 +142,7 @@ namespace Elsa.Persistence.EntityFrameworkCore.DbContexts
entity
.Property(x => x.State)
.HasConversion(x => Serialize(x), x => Deserialize<JObject>(x));
.HasConversion(x => Serialize(x), x => Deserialize<Variables>(x));
}
private void ConfigureConnectionDefinition(ModelBuilder modelBuilder)
@ -161,11 +160,11 @@ namespace Elsa.Persistence.EntityFrameworkCore.DbContexts
entity
.Property(x => x.State)
.HasConversion(x => Serialize(x), x => Deserialize<JObject>(x));
.HasConversion(x => Serialize(x), x => Deserialize<Variables>(x));
entity
.Property(x => x.Output)
.HasConversion(x => Serialize(x), x => Deserialize<JObject>(x));
.HasConversion(x => Serialize(x), x => Deserialize<Variables>(x));
}
private void ConfigureBlockingActivity(ModelBuilder modelBuilder)
@ -174,6 +173,17 @@ namespace Elsa.Persistence.EntityFrameworkCore.DbContexts
entity.HasKey(x => x.Id);
}
private void ConfigureScheduledActivity(ModelBuilder modelBuilder)
{
var entity = modelBuilder.Entity<ScheduledActivityEntity>();
entity.HasKey(x => x.Id);
entity
.Property(x => x.Input)
.HasConversion(x => Serialize(x), x => Deserialize<Variable>(x));
}
private string Serialize(object value)
{

View file

@ -1,3 +1,4 @@
using Elsa.Models;
using Newtonsoft.Json.Linq;
namespace Elsa.Persistence.EntityFrameworkCore.Entities
@ -10,6 +11,6 @@ namespace Elsa.Persistence.EntityFrameworkCore.Entities
public string Type { get; set; }
public int Left { get; set; }
public int Top { get; set; }
public JObject State { get; set; }
public Variables State { get; set; }
}
}

View file

@ -1,3 +1,4 @@
using Elsa.Models;
using Newtonsoft.Json.Linq;
namespace Elsa.Persistence.EntityFrameworkCore.Entities
@ -8,7 +9,7 @@ namespace Elsa.Persistence.EntityFrameworkCore.Entities
public string ActivityId { get; set; }
public WorkflowInstanceEntity WorkflowInstance { get; set; }
public string Type { get; set; }
public JObject State { get; set; }
public JObject Output { get; set; }
public Variables State { get; set; }
public Variables Output { get; set; }
}
}

View file

@ -0,0 +1,12 @@
using Elsa.Models;
namespace Elsa.Persistence.EntityFrameworkCore.Entities
{
public class ScheduledActivityEntity
{
public int Id { get; set; }
public WorkflowInstanceEntity WorkflowInstance { get; set; }
public string ActivityId { get; set; }
public Variable? Input { get; set; }
}
}

View file

@ -23,6 +23,6 @@ namespace Elsa.Persistence.EntityFrameworkCore.Entities
public WorkflowFault Fault { get; set; }
public ICollection<ActivityInstanceEntity> Activities { get; set; }
public ICollection<BlockingActivityEntity> BlockingActivities { get; set; }
public Stack<string> ScheduledActivities { get; set; }
public Stack<ScheduledActivityEntity> ScheduledActivities { get; set; }
}
}