From 5a1bb82298338100ecd904ed46f7370ee5fb8227 Mon Sep 17 00:00:00 2001 From: MysticBoy Date: Fri, 2 Dec 2022 16:39:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=BC=E5=86=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82=20=20=E4=BF=AE=E6=94=B9=20=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=20=20=E5=AE=A2=E6=88=B7=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0221202074318_ModifyEmailSpell.Designer.cs | 2644 +++++++++++++++ .../20221202074318_ModifyEmailSpell.cs | 25 + .../ApplicationDbContextModelSnapshot.cs | 2 +- ...0221202074042_ModifyEmailSpell.Designer.cs | 2663 +++++++++++++++ .../20221202074042_ModifyEmailSpell.cs | 95 + .../ApplicationDbContextModelSnapshot.cs | 23 +- ...0221202074541_ModifyEmailSpell.Designer.cs | 2665 +++++++++++++++ .../20221202074541_ModifyEmailSpell.cs | 95 + .../ApplicationDbContextModelSnapshot.cs | 23 +- ...0221202074402_ModifyEmailSpell.Designer.cs | 2894 +++++++++++++++++ .../20221202074402_ModifyEmailSpell.cs | 102 + .../ApplicationDbContextModelSnapshot.cs | 30 +- IoTSharp/ClientAppVue | 2 +- IoTSharp/Controllers/AccountController.cs | 6 +- IoTSharp/Controllers/CustomersController.cs | 11 +- IoTSharp/Controllers/InstallerController.cs | 2 +- .../Extensions/ApplicationDBInitializer.cs | 4 +- 17 files changed, 11268 insertions(+), 18 deletions(-) create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.Designer.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.Designer.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.Designer.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.Designer.cs create mode 100644 IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.cs diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.Designer.cs b/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.Designer.cs new file mode 100644 index 00000000..becadc47 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.Designer.cs @@ -0,0 +1,2644 @@ +// +using System; +using IoTSharp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IoTSharp.Data.MySql.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20221202074318_ModifyEmailSpell")] + partial class ModifyEmailSpell + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AckDateTime") + .HasColumnType("datetime(6)"); + + b.Property("AlarmDetail") + .HasColumnType("longtext"); + + b.Property("AlarmStatus") + .HasColumnType("int"); + + b.Property("AlarmType") + .HasColumnType("longtext"); + + b.Property("ClearDateTime") + .HasColumnType("datetime(6)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("EndDateTime") + .HasColumnType("datetime(6)"); + + b.Property("OriginatorId") + .HasColumnType("char(36)"); + + b.Property("OriginatorType") + .HasColumnType("int"); + + b.Property("Propagate") + .HasColumnType("tinyint(1)"); + + b.Property("Serverity") + .HasColumnType("int"); + + b.Property("StartDateTime") + .HasColumnType("datetime(6)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Alarms"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AssetType") + .HasColumnType("longtext"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Assets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AssetId") + .HasColumnType("char(36)"); + + b.Property("DataCatalog") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("KeyName") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("AssetId"); + + b.ToTable("AssetRelations"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ActionData") + .HasColumnType("JSON"); + + b.Property("ActionName") + .HasColumnType("longtext"); + + b.Property("ActionResult") + .HasColumnType("JSON"); + + b.Property("ActiveDateTime") + .HasColumnType("timestamp"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("ObjectID") + .HasColumnType("char(36)"); + + b.Property("ObjectName") + .HasColumnType("longtext"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("UserId") + .HasColumnType("longtext"); + + b.Property("UserName") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuditLog"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuthToken") + .HasColumnType("longtext"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuthorizedKeys"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionary", b => + { + b.Property("DictionaryId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("Dictionary18NKeyName") + .HasColumnType("longtext"); + + b.Property("DictionaryColor") + .HasColumnType("longtext"); + + b.Property("DictionaryDesc") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupId") + .HasColumnType("bigint"); + + b.Property("DictionaryIcon") + .HasColumnType("longtext"); + + b.Property("DictionaryName") + .HasColumnType("longtext"); + + b.Property("DictionaryPattern") + .HasColumnType("longtext"); + + b.Property("DictionaryStatus") + .HasColumnType("int"); + + b.Property("DictionaryTag") + .HasColumnType("longtext"); + + b.Property("DictionaryValue") + .HasColumnType("longtext"); + + b.Property("DictionaryValueType") + .HasColumnType("int"); + + b.Property("DictionaryValueTypeName") + .HasColumnType("longtext"); + + b.HasKey("DictionaryId"); + + b.ToTable("BaseDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionaryGroup", b => + { + b.Property("DictionaryGroupId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("DictionaryGroup18NKeyName") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupDesc") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupKey") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupName") + .HasColumnType("longtext"); + + b.Property("DictionaryGroupStatus") + .HasColumnType("int"); + + b.Property("DictionaryGroupValueType") + .HasColumnType("int"); + + b.Property("DictionaryGroupValueTypeName") + .HasColumnType("longtext"); + + b.HasKey("DictionaryGroupId"); + + b.ToTable("BaseDictionaryGroups"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("BizData") + .HasColumnType("longtext"); + + b.Property("Bizid") + .HasColumnType("longtext"); + + b.Property("CreaterDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("EventDesc") + .HasColumnType("longtext"); + + b.Property("EventName") + .HasColumnType("longtext"); + + b.Property("EventStaus") + .HasColumnType("int"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.Property("MataData") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("BaseEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseI18N", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("AddDate") + .HasColumnType("datetime(6)"); + + b.Property("KeyName") + .HasColumnType("longtext"); + + b.Property("ResouceDesc") + .HasColumnType("longtext"); + + b.Property("ResouceGroupId") + .HasColumnType("int"); + + b.Property("ResourceId") + .HasColumnType("bigint"); + + b.Property("ResourceKey") + .HasColumnType("longtext"); + + b.Property("ResourceTag") + .HasColumnType("longtext"); + + b.Property("ResourceType") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("char(36)"); + + b.Property("ValueBG") + .HasColumnType("longtext"); + + b.Property("ValueCS") + .HasColumnType("longtext"); + + b.Property("ValueDA") + .HasColumnType("longtext"); + + b.Property("ValueDEDE") + .HasColumnType("longtext"); + + b.Property("ValueELGR") + .HasColumnType("longtext"); + + b.Property("ValueENGR") + .HasColumnType("longtext"); + + b.Property("ValueENUS") + .HasColumnType("longtext"); + + b.Property("ValueESES") + .HasColumnType("longtext"); + + b.Property("ValueFI") + .HasColumnType("longtext"); + + b.Property("ValueFRFR") + .HasColumnType("longtext"); + + b.Property("ValueHE") + .HasColumnType("longtext"); + + b.Property("ValueHRHR") + .HasColumnType("longtext"); + + b.Property("ValueHU") + .HasColumnType("longtext"); + + b.Property("ValueITIT") + .HasColumnType("longtext"); + + b.Property("ValueJAJP") + .HasColumnType("longtext"); + + b.Property("ValueKOKR") + .HasColumnType("longtext"); + + b.Property("ValueNL") + .HasColumnType("longtext"); + + b.Property("ValuePLPL") + .HasColumnType("longtext"); + + b.Property("ValuePT") + .HasColumnType("longtext"); + + b.Property("ValueSLSL") + .HasColumnType("longtext"); + + b.Property("ValueSR") + .HasColumnType("longtext"); + + b.Property("ValueSV") + .HasColumnType("longtext"); + + b.Property("ValueTRTR") + .HasColumnType("longtext"); + + b.Property("ValueUK") + .HasColumnType("longtext"); + + b.Property("ValueVI") + .HasColumnType("longtext"); + + b.Property("ValueZHCN") + .HasColumnType("longtext"); + + b.Property("ValueZHTW") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("BaseI18Ns"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("City") + .HasColumnType("longtext"); + + b.Property("Country") + .HasColumnType("longtext"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Phone") + .HasColumnType("longtext"); + + b.Property("Province") + .HasColumnType("longtext"); + + b.Property("Street") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Customer"); + }); + + modelBuilder.Entity("IoTSharp.Data.DataStorage", b => + { + b.Property("Catalog") + .HasColumnType("int") + .HasColumnOrder(0); + + b.Property("DeviceId") + .HasColumnType("char(36)") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("varchar(255)") + .HasColumnOrder(2); + + b.Property("DataSide") + .HasColumnType("int") + .HasColumnOrder(4); + + b.Property("DateTime") + .HasColumnType("timestamp") + .HasColumnOrder(3); + + b.Property("Type") + .HasColumnType("int") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("longblob"); + + b.Property("Value_Boolean") + .HasColumnType("tinyint(1)"); + + b.Property("Value_DateTime") + .HasColumnType("timestamp"); + + b.Property("Value_Double") + .HasColumnType("double"); + + b.Property("Value_Json") + .HasColumnType("JSON"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("longtext"); + + b.Property("Value_XML") + .HasColumnType("longtext"); + + b.HasKey("Catalog", "DeviceId", "KeyName"); + + b.HasIndex("Catalog"); + + b.HasIndex("Catalog", "DeviceId"); + + b.ToTable("DataStorage"); + + b.HasDiscriminator("Catalog").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AuthorizedKeyId") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("DeviceModelId") + .HasColumnType("char(36)"); + + b.Property("DeviceType") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("OwnerId") + .HasColumnType("char(36)"); + + b.Property("ProduceId") + .HasColumnType("char(36)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Timeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizedKeyId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("ProduceId"); + + b.HasIndex("TenantId"); + + b.ToTable("Device"); + + b.HasDiscriminator("DeviceType").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.Property("DiagramId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DiagramDesc") + .HasColumnType("longtext"); + + b.Property("DiagramImage") + .HasColumnType("longtext"); + + b.Property("DiagramName") + .HasColumnType("longtext"); + + b.Property("DiagramStatus") + .HasColumnType("int"); + + b.Property("IsDefault") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("DiagramId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceDiagrams"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.Property("GraphId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DeviceDiagramDiagramId") + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("GraphElementId") + .HasColumnType("longtext"); + + b.Property("GraphFill") + .HasColumnType("longtext"); + + b.Property("GraphHeight") + .HasColumnType("int"); + + b.Property("GraphPostionX") + .HasColumnType("int"); + + b.Property("GraphPostionY") + .HasColumnType("int"); + + b.Property("GraphShape") + .HasColumnType("longtext"); + + b.Property("GraphStroke") + .HasColumnType("longtext"); + + b.Property("GraphStrokeWidth") + .HasColumnType("int"); + + b.Property("GraphTextAnchor") + .HasColumnType("longtext"); + + b.Property("GraphTextFill") + .HasColumnType("longtext"); + + b.Property("GraphTextFontFamily") + .HasColumnType("longtext"); + + b.Property("GraphTextFontSize") + .HasColumnType("int"); + + b.Property("GraphTextRefX") + .HasColumnType("int"); + + b.Property("GraphTextRefY") + .HasColumnType("int"); + + b.Property("GraphTextVerticalAnchor") + .HasColumnType("longtext"); + + b.Property("GraphWidth") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("GraphId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("DeviceDiagramDiagramId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphs"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.Property("ToolBoxId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CommondParam") + .HasColumnType("longtext"); + + b.Property("CommondType") + .HasColumnType("longtext"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("ToolBoxIcon") + .HasColumnType("longtext"); + + b.Property("ToolBoxName") + .HasColumnType("longtext"); + + b.Property("ToolBoxOffsetLeftPer") + .HasColumnType("int"); + + b.Property("ToolBoxOffsetTopPer") + .HasColumnType("int"); + + b.Property("ToolBoxOffsetX") + .HasColumnType("int"); + + b.Property("ToolBoxOffsetY") + .HasColumnType("int"); + + b.Property("ToolBoxRequestUri") + .HasColumnType("longtext"); + + b.Property("ToolBoxStatus") + .HasColumnType("int"); + + b.Property("ToolBoxType") + .HasColumnType("longtext"); + + b.HasKey("ToolBoxId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphToolBoxes"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("IdentityId") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("IdentityType") + .HasColumnType("int"); + + b.Property("IdentityValue") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId") + .IsUnique(); + + b.ToTable("DeviceIdentities"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Property("DeviceModelId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("ModelDesc") + .HasColumnType("longtext"); + + b.Property("ModelName") + .HasColumnType("longtext"); + + b.Property("ModelStatus") + .HasColumnType("int"); + + b.HasKey("DeviceModelId"); + + b.ToTable("DeviceModels"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.Property("CommandId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CommandI18N") + .HasColumnType("longtext"); + + b.Property("CommandName") + .HasColumnType("longtext"); + + b.Property("CommandParams") + .HasColumnType("longtext"); + + b.Property("CommandStatus") + .HasColumnType("int"); + + b.Property("CommandTemplate") + .HasColumnType("longtext"); + + b.Property("CommandTitle") + .HasColumnType("longtext"); + + b.Property("CommandType") + .HasColumnType("int"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("DeviceModelId") + .HasColumnType("char(36)"); + + b.HasKey("CommandId"); + + b.HasIndex("DeviceModelId"); + + b.ToTable("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePort", b => + { + b.Property("PortId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("bigint"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("PortDesc") + .HasColumnType("longtext"); + + b.Property("PortElementId") + .HasColumnType("longtext"); + + b.Property("PortName") + .HasColumnType("longtext"); + + b.Property("PortPhyType") + .HasColumnType("int"); + + b.Property("PortPic") + .HasColumnType("longtext"); + + b.Property("PortStatus") + .HasColumnType("int"); + + b.Property("PortType") + .HasColumnType("int"); + + b.HasKey("PortId"); + + b.ToTable("DevicePorts"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePortMapping", b => + { + b.Property("MappingId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("MappingIndex") + .HasColumnType("int"); + + b.Property("MappingStatus") + .HasColumnType("int"); + + b.Property("SourceDeviceId") + .HasColumnType("char(36)"); + + b.Property("SourceElementId") + .HasColumnType("longtext"); + + b.Property("SourceId") + .HasColumnType("longtext"); + + b.Property("TargeId") + .HasColumnType("longtext"); + + b.Property("TargetDeviceId") + .HasColumnType("char(36)"); + + b.Property("TargetElementId") + .HasColumnType("longtext"); + + b.HasKey("MappingId"); + + b.ToTable("DevicePortMappings"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.Property("DeviceRuleId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("ConfigDateTime") + .HasColumnType("datetime(6)"); + + b.Property("ConfigUser") + .HasColumnType("char(36)"); + + b.Property("DeviceId") + .HasColumnType("char(36)"); + + b.Property("EnableTrace") + .HasColumnType("int"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.HasKey("DeviceRuleId"); + + b.HasIndex("DeviceId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("DeviceRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.Property("FieldId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("FieldCode") + .HasColumnType("longtext"); + + b.Property("FieldCreateDate") + .HasColumnType("datetime(6)"); + + b.Property("FieldEditDate") + .HasColumnType("datetime(6)"); + + b.Property("FieldI18nKey") + .HasColumnType("longtext"); + + b.Property("FieldMaxLength") + .HasColumnType("int"); + + b.Property("FieldName") + .HasColumnType("longtext"); + + b.Property("FieldPattern") + .HasColumnType("longtext"); + + b.Property("FieldPocoTypeName") + .HasColumnType("longtext"); + + b.Property("FieldStatus") + .HasColumnType("int"); + + b.Property("FieldUIElement") + .HasColumnType("bigint"); + + b.Property("FieldUIElementSchema") + .HasColumnType("longtext"); + + b.Property("FieldUnit") + .HasColumnType("longtext"); + + b.Property("FieldValue") + .HasColumnType("longtext"); + + b.Property("FieldValueDataSource") + .HasColumnType("longtext"); + + b.Property("FieldValueLocalDataSource") + .HasColumnType("longtext"); + + b.Property("FieldValueType") + .HasColumnType("int"); + + b.Property("FieldValueTypeName") + .HasColumnType("longtext"); + + b.Property("FormId") + .HasColumnType("bigint"); + + b.Property("IsEnabled") + .HasColumnType("tinyint(1)"); + + b.Property("IsRequired") + .HasColumnType("tinyint(1)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("FieldId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.Property("FieldValueId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("FieldCode") + .HasColumnType("longtext"); + + b.Property("FieldCreateDate") + .HasColumnType("datetime(6)"); + + b.Property("FieldId") + .HasColumnType("bigint"); + + b.Property("FieldName") + .HasColumnType("longtext"); + + b.Property("FieldUnit") + .HasColumnType("longtext"); + + b.Property("FieldValue") + .HasColumnType("longtext"); + + b.Property("FieldValueType") + .HasColumnType("bigint"); + + b.Property("FromId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("FieldValueId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldValueInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.Property("FormId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("FormCreator") + .HasColumnType("bigint"); + + b.Property("FormDesc") + .HasColumnType("longtext"); + + b.Property("FormLayout") + .HasColumnType("longtext"); + + b.Property("FormName") + .HasColumnType("longtext"); + + b.Property("FormSchame") + .HasColumnType("longtext"); + + b.Property("FormStatus") + .HasColumnType("int"); + + b.Property("FromCreateDate") + .HasColumnType("datetime(6)"); + + b.Property("IsCompact") + .HasColumnType("tinyint(1)"); + + b.Property("ModelClass") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Url") + .HasColumnType("longtext"); + + b.HasKey("FormId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.Property("FlowId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Conditionexpression") + .HasColumnType("longtext"); + + b.Property("CreateDate") + .HasColumnType("datetime(6)"); + + b.Property("CreateId") + .HasColumnType("char(36)"); + + b.Property("Createor") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("ExecutorId") + .HasColumnType("char(36)"); + + b.Property("FlowClass") + .HasColumnType("longtext"); + + b.Property("FlowIcon") + .HasColumnType("longtext"); + + b.Property("FlowNameSpace") + .HasColumnType("longtext"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.Property("FlowShapeType") + .HasColumnType("longtext"); + + b.Property("FlowStatus") + .HasColumnType("int"); + + b.Property("FlowTag") + .HasColumnType("longtext"); + + b.Property("FlowType") + .HasColumnType("longtext"); + + b.Property("Flowdesc") + .HasColumnType("longtext"); + + b.Property("Flowname") + .HasColumnType("longtext"); + + b.Property("Incoming") + .HasColumnType("longtext"); + + b.Property("Left") + .HasColumnType("longtext"); + + b.Property("NodeProcessClass") + .HasColumnType("longtext"); + + b.Property("NodeProcessMethod") + .HasColumnType("longtext"); + + b.Property("NodeProcessParams") + .HasColumnType("longtext"); + + b.Property("NodeProcessScript") + .HasColumnType("longtext"); + + b.Property("NodeProcessScriptType") + .HasColumnType("longtext"); + + b.Property("NodeProcessType") + .HasColumnType("longtext"); + + b.Property("ObjectId") + .HasColumnType("longtext"); + + b.Property("Outgoing") + .HasColumnType("longtext"); + + b.Property("SourceId") + .HasColumnType("longtext"); + + b.Property("TargetId") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("TestStatus") + .HasColumnType("int"); + + b.Property("Tester") + .HasColumnType("char(36)"); + + b.Property("TesterDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Top") + .HasColumnType("longtext"); + + b.Property("bpmnid") + .HasColumnType("longtext"); + + b.HasKey("FlowId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("ExecutorId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("Flows"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.Property("OperationId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AddDate") + .HasColumnType("datetime(6)"); + + b.Property("BaseEventEventId") + .HasColumnType("char(36)"); + + b.Property("BizId") + .HasColumnType("longtext"); + + b.Property("Data") + .HasColumnType("longtext"); + + b.Property("FlowId") + .HasColumnType("char(36)"); + + b.Property("FlowRuleRuleId") + .HasColumnType("char(36)"); + + b.Property("NodeStatus") + .HasColumnType("int"); + + b.Property("OperationDesc") + .HasColumnType("longtext"); + + b.Property("Step") + .HasColumnType("int"); + + b.Property("Tag") + .HasColumnType("longtext"); + + b.Property("bpmnid") + .HasColumnType("longtext"); + + b.HasKey("OperationId"); + + b.HasIndex("BaseEventEventId"); + + b.HasIndex("FlowId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("FlowOperations"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.Property("RuleId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreatTime") + .HasColumnType("datetime(6)"); + + b.Property("CreateId") + .HasColumnType("char(36)"); + + b.Property("Creator") + .HasColumnType("longtext"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DefinitionsXml") + .HasColumnType("longtext"); + + b.Property("Describes") + .HasColumnType("longtext"); + + b.Property("ExecutableCode") + .HasColumnType("longtext"); + + b.Property("MountType") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("longtext"); + + b.Property("ParentRuleId") + .HasColumnType("char(36)"); + + b.Property("RuleDesc") + .HasColumnType("longtext"); + + b.Property("RuleStatus") + .HasColumnType("int"); + + b.Property("RuleType") + .HasColumnType("int"); + + b.Property("Runner") + .HasColumnType("longtext"); + + b.Property("SubVersion") + .HasColumnType("double"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Version") + .HasColumnType("double"); + + b.HasKey("RuleId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("FlowRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DefaultDeviceType") + .HasColumnType("int"); + + b.Property("DefaultIdentityType") + .HasColumnType("int"); + + b.Property("DefaultTimeout") + .HasColumnType("int"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("GatewayConfiguration") + .HasColumnType("longtext"); + + b.Property("GatewayType") + .HasColumnType("int"); + + b.Property("Icon") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Produces"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Customer") + .HasColumnType("char(36)"); + + b.Property("DataType") + .HasColumnType("int"); + + b.Property("DefaultValue") + .HasColumnType("longtext"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("Display") + .HasColumnType("tinyint(1)"); + + b.Property("DisplayName") + .HasColumnType("longtext"); + + b.Property("KeyDesc") + .HasColumnType("longtext"); + + b.Property("KeyName") + .HasColumnType("longtext"); + + b.Property("Place0") + .HasColumnType("longtext"); + + b.Property("Place1") + .HasColumnType("longtext"); + + b.Property("Place2") + .HasColumnType("longtext"); + + b.Property("Place3") + .HasColumnType("longtext"); + + b.Property("Place4") + .HasColumnType("longtext"); + + b.Property("Place5") + .HasColumnType("longtext"); + + b.Property("PlaceOrder0") + .HasColumnType("longtext"); + + b.Property("PlaceOrder1") + .HasColumnType("longtext"); + + b.Property("PlaceOrder2") + .HasColumnType("longtext"); + + b.Property("PlaceOrder3") + .HasColumnType("longtext"); + + b.Property("PlaceOrder4") + .HasColumnType("longtext"); + + b.Property("PlaceOrder5") + .HasColumnType("longtext"); + + b.Property("ProduceId") + .HasColumnType("char(36)"); + + b.Property("Tag") + .HasColumnType("longtext"); + + b.Property("Unit") + .HasColumnType("longtext"); + + b.Property("UnitConvert") + .HasColumnType("tinyint(1)"); + + b.Property("UnitExpression") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("ProduceId"); + + b.ToTable("ProduceDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AddedDate") + .HasColumnType("datetime(6)"); + + b.Property("ExpiryDate") + .HasColumnType("datetime(6)"); + + b.Property("IsRevorked") + .HasColumnType("tinyint(1)"); + + b.Property("IsUsed") + .HasColumnType("tinyint(1)"); + + b.Property("JwtId") + .HasColumnType("longtext"); + + b.Property("Token") + .HasColumnType("longtext"); + + b.Property("UserId") + .HasColumnType("varchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("IdentityUserId") + .HasColumnType("varchar(255)"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("IdentityUserId"); + + b.HasIndex("TenantId"); + + b.ToTable("Relationship"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.Property("ExecutorId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("AddDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("DefaultConfig") + .HasColumnType("longtext"); + + b.Property("ExecutorDesc") + .HasColumnType("longtext"); + + b.Property("ExecutorName") + .HasColumnType("longtext"); + + b.Property("ExecutorStatus") + .HasColumnType("int"); + + b.Property("MataData") + .HasColumnType("longtext"); + + b.Property("Path") + .HasColumnType("longtext"); + + b.Property("Tag") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("TestStatus") + .HasColumnType("int"); + + b.Property("Tester") + .HasColumnType("char(36)"); + + b.Property("TesterDateTime") + .HasColumnType("datetime(6)"); + + b.Property("TypeName") + .HasColumnType("longtext"); + + b.HasKey("ExecutorId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("RuleTaskExecutors"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("CreateDateTime") + .HasColumnType("datetime(6)"); + + b.Property("Creator") + .HasColumnType("char(36)"); + + b.Property("CustomerId") + .HasColumnType("char(36)"); + + b.Property("EventDesc") + .HasColumnType("longtext"); + + b.Property("EventName") + .HasColumnType("longtext"); + + b.Property("EventNameSpace") + .HasColumnType("longtext"); + + b.Property("EventParam") + .HasColumnType("longtext"); + + b.Property("EventStatus") + .HasColumnType("int"); + + b.Property("EventTag") + .HasColumnType("longtext"); + + b.Property("TenantId") + .HasColumnType("char(36)"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("SubscriptionEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.Property("BindId") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("EventId") + .HasColumnType("char(36)"); + + b.Property("RuleTaskExecutorExecutorId") + .HasColumnType("char(36)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("SubscriptionEventId") + .HasColumnType("char(36)"); + + b.Property("TaskConfig") + .HasColumnType("longtext"); + + b.HasKey("BindId"); + + b.HasIndex("RuleTaskExecutorExecutorId"); + + b.HasIndex("SubscriptionEventId"); + + b.ToTable("SubscriptionTasks"); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryData", b => + { + b.Property("DeviceId") + .HasColumnType("char(36)") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("varchar(255)") + .HasColumnOrder(2); + + b.Property("DateTime") + .HasColumnType("timestamp") + .HasColumnOrder(3); + + b.Property("DataSide") + .HasColumnType("int") + .HasColumnOrder(4); + + b.Property("Type") + .HasColumnType("int") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("longblob"); + + b.Property("Value_Boolean") + .HasColumnType("tinyint(1)"); + + b.Property("Value_DateTime") + .HasColumnType("timestamp"); + + b.Property("Value_Double") + .HasColumnType("double"); + + b.Property("Value_Json") + .HasColumnType("JSON"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("longtext"); + + b.Property("Value_XML") + .HasColumnType("longtext"); + + b.HasKey("DeviceId", "KeyName", "DateTime"); + + b.HasIndex("DeviceId"); + + b.HasIndex("KeyName"); + + b.HasIndex("DeviceId", "KeyName"); + + b.ToTable("TelemetryData"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("char(36)"); + + b.Property("Address") + .HasColumnType("longtext"); + + b.Property("City") + .HasColumnType("longtext"); + + b.Property("Country") + .HasColumnType("longtext"); + + b.Property("Deleted") + .HasColumnType("tinyint(1)"); + + b.Property("Email") + .HasColumnType("longtext"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Phone") + .HasColumnType("longtext"); + + b.Property("Province") + .HasColumnType("longtext"); + + b.Property("Street") + .HasColumnType("longtext"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Tenant"); + }); + + 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"); + + 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"); + + 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("IoTSharp.Data.AttributeLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(2); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.HasBaseType("IoTSharp.Data.Device"); + + b.HasDiscriminator().HasValue(1); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.Property("OwnerId") + .HasColumnType("char(36)"); + + b.HasIndex("OwnerId"); + + b.HasDiscriminator().HasValue(5); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(4); + }); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.HasOne("IoTSharp.Data.Asset", null) + .WithMany("OwnedAssets") + .HasForeignKey("AssetId"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Customers") + .HasForeignKey("TenantId"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.HasOne("IoTSharp.Data.AuthorizedKey", null) + .WithMany("Devices") + .HasForeignKey("AuthorizedKeyId"); + + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany("Devices") + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Gateway", "Owner") + .WithMany("Children") + .HasForeignKey("OwnerId"); + + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Devices") + .HasForeignKey("ProduceId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Devices") + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Owner"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.DeviceDiagram", "DeviceDiagram") + .WithMany() + .HasForeignKey("DeviceDiagramDiagramId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("DeviceDiagram"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithOne("DeviceIdentity") + .HasForeignKey("IoTSharp.Data.DeviceIdentity", "DeviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany("DeviceModelCommands") + .HasForeignKey("DeviceModelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceModel"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithMany() + .HasForeignKey("DeviceId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("Device"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "Executor") + .WithMany() + .HasForeignKey("ExecutorId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Executor"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.HasOne("IoTSharp.Data.BaseEvent", "BaseEvent") + .WithMany() + .HasForeignKey("BaseEventEventId"); + + b.HasOne("IoTSharp.Data.Flow", "Flow") + .WithMany() + .HasForeignKey("FlowId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("BaseEvent"); + + b.Navigation("Flow"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Dictionaries") + .HasForeignKey("ProduceId"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "IdentityUser") + .WithMany() + .HasForeignKey("IdentityUserId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("IdentityUser"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "RuleTaskExecutor") + .WithMany() + .HasForeignKey("RuleTaskExecutorExecutorId"); + + b.HasOne("IoTSharp.Data.SubscriptionEvent", "Subscription") + .WithMany() + .HasForeignKey("SubscriptionEventId"); + + b.Navigation("RuleTaskExecutor"); + + b.Navigation("Subscription"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasOne("IoTSharp.Data.Produce", "Owner") + .WithMany("DefaultAttributes") + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Navigation("OwnedAssets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Navigation("DeviceIdentity"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Navigation("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Navigation("DefaultAttributes"); + + b.Navigation("Devices"); + + b.Navigation("Dictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Navigation("Customers"); + + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.Navigation("Children"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.cs b/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.cs new file mode 100644 index 00000000..91e07018 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/20221202074318_ModifyEmailSpell.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IoTSharp.Data.MySql.Migrations +{ + public partial class ModifyEmailSpell : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "EMail", + table: "Tenant", + newName: "Email"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Email", + table: "Tenant", + newName: "EMail"); + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs b/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs index 142c3f83..d7ceb495 100644 --- a/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/IoTSharp.Data.Storage/IoTSharp.Data.MySQL/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1864,7 +1864,7 @@ namespace IoTSharp.Data.MySql.Migrations b.Property("Deleted") .HasColumnType("tinyint(1)"); - b.Property("EMail") + b.Property("Email") .HasColumnType("longtext"); b.Property("Name") diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.Designer.cs b/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.Designer.cs new file mode 100644 index 00000000..08063648 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.Designer.cs @@ -0,0 +1,2663 @@ +// +using System; +using IoTSharp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace IoTSharp.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20221202074042_ModifyEmailSpell")] + partial class ModifyEmailSpell + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AckDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("AlarmDetail") + .HasColumnType("text"); + + b.Property("AlarmStatus") + .HasColumnType("integer"); + + b.Property("AlarmType") + .HasColumnType("text"); + + b.Property("ClearDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("EndDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("OriginatorId") + .HasColumnType("uuid"); + + b.Property("OriginatorType") + .HasColumnType("integer"); + + b.Property("Propagate") + .HasColumnType("boolean"); + + b.Property("Serverity") + .HasColumnType("integer"); + + b.Property("StartDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Alarms"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AssetType") + .HasColumnType("text"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Assets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AssetId") + .HasColumnType("uuid"); + + b.Property("DataCatalog") + .HasColumnType("integer"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("DeviceId") + .HasColumnType("uuid"); + + b.Property("KeyName") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("AssetId"); + + b.ToTable("AssetRelations"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ActionData") + .HasColumnType("jsonb"); + + b.Property("ActionName") + .HasColumnType("text"); + + b.Property("ActionResult") + .HasColumnType("jsonb"); + + b.Property("ActiveDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("ObjectID") + .HasColumnType("uuid"); + + b.Property("ObjectName") + .HasColumnType("text"); + + b.Property("ObjectType") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("UserName") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuditLog"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AuthToken") + .HasColumnType("text"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuthorizedKeys"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionary", b => + { + b.Property("DictionaryId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("DictionaryId")); + + b.Property("Dictionary18NKeyName") + .HasColumnType("text"); + + b.Property("DictionaryColor") + .HasColumnType("text"); + + b.Property("DictionaryDesc") + .HasColumnType("text"); + + b.Property("DictionaryGroupId") + .HasColumnType("bigint"); + + b.Property("DictionaryIcon") + .HasColumnType("text"); + + b.Property("DictionaryName") + .HasColumnType("text"); + + b.Property("DictionaryPattern") + .HasColumnType("text"); + + b.Property("DictionaryStatus") + .HasColumnType("integer"); + + b.Property("DictionaryTag") + .HasColumnType("text"); + + b.Property("DictionaryValue") + .HasColumnType("text"); + + b.Property("DictionaryValueType") + .HasColumnType("integer"); + + b.Property("DictionaryValueTypeName") + .HasColumnType("text"); + + b.HasKey("DictionaryId"); + + b.ToTable("BaseDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionaryGroup", b => + { + b.Property("DictionaryGroupId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("DictionaryGroupId")); + + b.Property("DictionaryGroup18NKeyName") + .HasColumnType("text"); + + b.Property("DictionaryGroupDesc") + .HasColumnType("text"); + + b.Property("DictionaryGroupKey") + .HasColumnType("text"); + + b.Property("DictionaryGroupName") + .HasColumnType("text"); + + b.Property("DictionaryGroupStatus") + .HasColumnType("integer"); + + b.Property("DictionaryGroupValueType") + .HasColumnType("integer"); + + b.Property("DictionaryGroupValueTypeName") + .HasColumnType("text"); + + b.HasKey("DictionaryGroupId"); + + b.ToTable("BaseDictionaryGroups"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BizData") + .HasColumnType("text"); + + b.Property("Bizid") + .HasColumnType("text"); + + b.Property("CreaterDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("EventDesc") + .HasColumnType("text"); + + b.Property("EventName") + .HasColumnType("text"); + + b.Property("EventStaus") + .HasColumnType("integer"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uuid"); + + b.Property("MataData") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("BaseEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseI18N", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AddDate") + .HasColumnType("timestamp with time zone"); + + b.Property("KeyName") + .HasColumnType("text"); + + b.Property("ResouceDesc") + .HasColumnType("text"); + + b.Property("ResouceGroupId") + .HasColumnType("integer"); + + b.Property("ResourceId") + .HasColumnType("bigint"); + + b.Property("ResourceKey") + .HasColumnType("text"); + + b.Property("ResourceTag") + .HasColumnType("text"); + + b.Property("ResourceType") + .HasColumnType("integer"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("ValueBG") + .HasColumnType("text"); + + b.Property("ValueCS") + .HasColumnType("text"); + + b.Property("ValueDA") + .HasColumnType("text"); + + b.Property("ValueDEDE") + .HasColumnType("text"); + + b.Property("ValueELGR") + .HasColumnType("text"); + + b.Property("ValueENGR") + .HasColumnType("text"); + + b.Property("ValueENUS") + .HasColumnType("text"); + + b.Property("ValueESES") + .HasColumnType("text"); + + b.Property("ValueFI") + .HasColumnType("text"); + + b.Property("ValueFRFR") + .HasColumnType("text"); + + b.Property("ValueHE") + .HasColumnType("text"); + + b.Property("ValueHRHR") + .HasColumnType("text"); + + b.Property("ValueHU") + .HasColumnType("text"); + + b.Property("ValueITIT") + .HasColumnType("text"); + + b.Property("ValueJAJP") + .HasColumnType("text"); + + b.Property("ValueKOKR") + .HasColumnType("text"); + + b.Property("ValueNL") + .HasColumnType("text"); + + b.Property("ValuePLPL") + .HasColumnType("text"); + + b.Property("ValuePT") + .HasColumnType("text"); + + b.Property("ValueSLSL") + .HasColumnType("text"); + + b.Property("ValueSR") + .HasColumnType("text"); + + b.Property("ValueSV") + .HasColumnType("text"); + + b.Property("ValueTRTR") + .HasColumnType("text"); + + b.Property("ValueUK") + .HasColumnType("text"); + + b.Property("ValueVI") + .HasColumnType("text"); + + b.Property("ValueZHCN") + .HasColumnType("text"); + + b.Property("ValueZHTW") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("BaseI18Ns"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Address") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("ZipCode") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Customer"); + }); + + modelBuilder.Entity("IoTSharp.Data.DataStorage", b => + { + b.Property("Catalog") + .HasColumnType("integer") + .HasColumnOrder(0); + + b.Property("DeviceId") + .HasColumnType("uuid") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("text") + .HasColumnOrder(2); + + b.Property("DataSide") + .HasColumnType("integer") + .HasColumnOrder(4); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnOrder(3); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("bytea"); + + b.Property("Value_Boolean") + .HasColumnType("boolean"); + + b.Property("Value_DateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Value_Double") + .HasColumnType("double precision"); + + b.Property("Value_Json") + .HasColumnType("jsonb"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("text"); + + b.Property("Value_XML") + .HasColumnType("xml"); + + b.HasKey("Catalog", "DeviceId", "KeyName"); + + b.HasIndex("Catalog"); + + b.HasIndex("Catalog", "DeviceId"); + + b.ToTable("DataStorage"); + + b.HasDiscriminator("Catalog").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AuthorizedKeyId") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("DeviceModelId") + .HasColumnType("uuid"); + + b.Property("DeviceType") + .HasColumnType("integer"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("ProduceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("Timeout") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizedKeyId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("ProduceId"); + + b.HasIndex("TenantId"); + + b.ToTable("Device"); + + b.HasDiscriminator("DeviceType").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.Property("DiagramId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("DiagramDesc") + .HasColumnType("text"); + + b.Property("DiagramImage") + .HasColumnType("text"); + + b.Property("DiagramName") + .HasColumnType("text"); + + b.Property("DiagramStatus") + .HasColumnType("integer"); + + b.Property("IsDefault") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("DiagramId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceDiagrams"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.Property("GraphId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("DeviceDiagramDiagramId") + .HasColumnType("uuid"); + + b.Property("DeviceId") + .HasColumnType("uuid"); + + b.Property("GraphElementId") + .HasColumnType("text"); + + b.Property("GraphFill") + .HasColumnType("text"); + + b.Property("GraphHeight") + .HasColumnType("integer"); + + b.Property("GraphPostionX") + .HasColumnType("integer"); + + b.Property("GraphPostionY") + .HasColumnType("integer"); + + b.Property("GraphShape") + .HasColumnType("text"); + + b.Property("GraphStroke") + .HasColumnType("text"); + + b.Property("GraphStrokeWidth") + .HasColumnType("integer"); + + b.Property("GraphTextAnchor") + .HasColumnType("text"); + + b.Property("GraphTextFill") + .HasColumnType("text"); + + b.Property("GraphTextFontFamily") + .HasColumnType("text"); + + b.Property("GraphTextFontSize") + .HasColumnType("integer"); + + b.Property("GraphTextRefX") + .HasColumnType("integer"); + + b.Property("GraphTextRefY") + .HasColumnType("integer"); + + b.Property("GraphTextVerticalAnchor") + .HasColumnType("text"); + + b.Property("GraphWidth") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("GraphId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("DeviceDiagramDiagramId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphs"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.Property("ToolBoxId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CommondParam") + .HasColumnType("text"); + + b.Property("CommondType") + .HasColumnType("text"); + + b.Property("CreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("DeviceId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("ToolBoxIcon") + .HasColumnType("text"); + + b.Property("ToolBoxName") + .HasColumnType("text"); + + b.Property("ToolBoxOffsetLeftPer") + .HasColumnType("integer"); + + b.Property("ToolBoxOffsetTopPer") + .HasColumnType("integer"); + + b.Property("ToolBoxOffsetX") + .HasColumnType("integer"); + + b.Property("ToolBoxOffsetY") + .HasColumnType("integer"); + + b.Property("ToolBoxRequestUri") + .HasColumnType("text"); + + b.Property("ToolBoxStatus") + .HasColumnType("integer"); + + b.Property("ToolBoxType") + .HasColumnType("text"); + + b.HasKey("ToolBoxId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphToolBoxes"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DeviceId") + .HasColumnType("uuid"); + + b.Property("IdentityId") + .IsRequired() + .HasColumnType("text"); + + b.Property("IdentityType") + .HasColumnType("integer"); + + b.Property("IdentityValue") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId") + .IsUnique(); + + b.ToTable("DeviceIdentities"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Property("DeviceModelId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreateDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("ModelDesc") + .HasColumnType("text"); + + b.Property("ModelName") + .HasColumnType("text"); + + b.Property("ModelStatus") + .HasColumnType("integer"); + + b.HasKey("DeviceModelId"); + + b.ToTable("DeviceModels"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.Property("CommandId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CommandI18N") + .HasColumnType("text"); + + b.Property("CommandName") + .HasColumnType("text"); + + b.Property("CommandParams") + .HasColumnType("text"); + + b.Property("CommandStatus") + .HasColumnType("integer"); + + b.Property("CommandTemplate") + .HasColumnType("text"); + + b.Property("CommandTitle") + .HasColumnType("text"); + + b.Property("CommandType") + .HasColumnType("integer"); + + b.Property("CreateDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("DeviceModelId") + .HasColumnType("uuid"); + + b.HasKey("CommandId"); + + b.HasIndex("DeviceModelId"); + + b.ToTable("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePort", b => + { + b.Property("PortId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("bigint"); + + b.Property("DeviceId") + .HasColumnType("uuid"); + + b.Property("PortDesc") + .HasColumnType("text"); + + b.Property("PortElementId") + .HasColumnType("text"); + + b.Property("PortName") + .HasColumnType("text"); + + b.Property("PortPhyType") + .HasColumnType("integer"); + + b.Property("PortPic") + .HasColumnType("text"); + + b.Property("PortStatus") + .HasColumnType("integer"); + + b.Property("PortType") + .HasColumnType("integer"); + + b.HasKey("PortId"); + + b.ToTable("DevicePorts"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePortMapping", b => + { + b.Property("MappingId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("MappingIndex") + .HasColumnType("integer"); + + b.Property("MappingStatus") + .HasColumnType("integer"); + + b.Property("SourceDeviceId") + .HasColumnType("uuid"); + + b.Property("SourceElementId") + .HasColumnType("text"); + + b.Property("SourceId") + .HasColumnType("text"); + + b.Property("TargeId") + .HasColumnType("text"); + + b.Property("TargetDeviceId") + .HasColumnType("uuid"); + + b.Property("TargetElementId") + .HasColumnType("text"); + + b.HasKey("MappingId"); + + b.ToTable("DevicePortMappings"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.Property("DeviceRuleId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConfigDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("ConfigUser") + .HasColumnType("uuid"); + + b.Property("DeviceId") + .HasColumnType("uuid"); + + b.Property("EnableTrace") + .HasColumnType("integer"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uuid"); + + b.HasKey("DeviceRuleId"); + + b.HasIndex("DeviceId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("DeviceRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.Property("FieldId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("FieldId")); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("FieldCode") + .HasColumnType("text"); + + b.Property("FieldCreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("FieldEditDate") + .HasColumnType("timestamp with time zone"); + + b.Property("FieldI18nKey") + .HasColumnType("text"); + + b.Property("FieldMaxLength") + .HasColumnType("integer"); + + b.Property("FieldName") + .HasColumnType("text"); + + b.Property("FieldPattern") + .HasColumnType("text"); + + b.Property("FieldPocoTypeName") + .HasColumnType("text"); + + b.Property("FieldStatus") + .HasColumnType("integer"); + + b.Property("FieldUIElement") + .HasColumnType("bigint"); + + b.Property("FieldUIElementSchema") + .HasColumnType("text"); + + b.Property("FieldUnit") + .HasColumnType("text"); + + b.Property("FieldValue") + .HasColumnType("text"); + + b.Property("FieldValueDataSource") + .HasColumnType("text"); + + b.Property("FieldValueLocalDataSource") + .HasColumnType("text"); + + b.Property("FieldValueType") + .HasColumnType("integer"); + + b.Property("FieldValueTypeName") + .HasColumnType("text"); + + b.Property("FormId") + .HasColumnType("bigint"); + + b.Property("IsEnabled") + .HasColumnType("boolean"); + + b.Property("IsRequired") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("FieldId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.Property("FieldValueId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("FieldValueId")); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("FieldCode") + .HasColumnType("text"); + + b.Property("FieldCreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("FieldId") + .HasColumnType("bigint"); + + b.Property("FieldName") + .HasColumnType("text"); + + b.Property("FieldUnit") + .HasColumnType("text"); + + b.Property("FieldValue") + .HasColumnType("text"); + + b.Property("FieldValueType") + .HasColumnType("bigint"); + + b.Property("FromId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("FieldValueId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldValueInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.Property("FormId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("FormId")); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("FormCreator") + .HasColumnType("bigint"); + + b.Property("FormDesc") + .HasColumnType("text"); + + b.Property("FormLayout") + .HasColumnType("text"); + + b.Property("FormName") + .HasColumnType("text"); + + b.Property("FormSchame") + .HasColumnType("text"); + + b.Property("FormStatus") + .HasColumnType("integer"); + + b.Property("FromCreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("IsCompact") + .HasColumnType("boolean"); + + b.Property("ModelClass") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("Url") + .HasColumnType("text"); + + b.HasKey("FormId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.Property("FlowId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Conditionexpression") + .HasColumnType("text"); + + b.Property("CreateDate") + .HasColumnType("timestamp with time zone"); + + b.Property("CreateId") + .HasColumnType("uuid"); + + b.Property("Createor") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("ExecutorId") + .HasColumnType("uuid"); + + b.Property("FlowClass") + .HasColumnType("text"); + + b.Property("FlowIcon") + .HasColumnType("text"); + + b.Property("FlowNameSpace") + .HasColumnType("text"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uuid"); + + b.Property("FlowShapeType") + .HasColumnType("text"); + + b.Property("FlowStatus") + .HasColumnType("integer"); + + b.Property("FlowTag") + .HasColumnType("text"); + + b.Property("FlowType") + .HasColumnType("text"); + + b.Property("Flowdesc") + .HasColumnType("text"); + + b.Property("Flowname") + .HasColumnType("text"); + + b.Property("Incoming") + .HasColumnType("text"); + + b.Property("Left") + .HasColumnType("text"); + + b.Property("NodeProcessClass") + .HasColumnType("text"); + + b.Property("NodeProcessMethod") + .HasColumnType("text"); + + b.Property("NodeProcessParams") + .HasColumnType("text"); + + b.Property("NodeProcessScript") + .HasColumnType("text"); + + b.Property("NodeProcessScriptType") + .HasColumnType("text"); + + b.Property("NodeProcessType") + .HasColumnType("text"); + + b.Property("ObjectId") + .HasColumnType("text"); + + b.Property("Outgoing") + .HasColumnType("text"); + + b.Property("SourceId") + .HasColumnType("text"); + + b.Property("TargetId") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("TestStatus") + .HasColumnType("integer"); + + b.Property("Tester") + .HasColumnType("uuid"); + + b.Property("TesterDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Top") + .HasColumnType("text"); + + b.Property("bpmnid") + .HasColumnType("text"); + + b.HasKey("FlowId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("ExecutorId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("Flows"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.Property("OperationId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddDate") + .HasColumnType("timestamp with time zone"); + + b.Property("BaseEventEventId") + .HasColumnType("uuid"); + + b.Property("BizId") + .HasColumnType("text"); + + b.Property("Data") + .HasColumnType("text"); + + b.Property("FlowId") + .HasColumnType("uuid"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uuid"); + + b.Property("NodeStatus") + .HasColumnType("integer"); + + b.Property("OperationDesc") + .HasColumnType("text"); + + b.Property("Step") + .HasColumnType("integer"); + + b.Property("Tag") + .HasColumnType("text"); + + b.Property("bpmnid") + .HasColumnType("text"); + + b.HasKey("OperationId"); + + b.HasIndex("BaseEventEventId"); + + b.HasIndex("FlowId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("FlowOperations"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.Property("RuleId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatTime") + .HasColumnType("timestamp with time zone"); + + b.Property("CreateId") + .HasColumnType("uuid"); + + b.Property("Creator") + .HasColumnType("text"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("DefinitionsXml") + .HasColumnType("text"); + + b.Property("Describes") + .HasColumnType("text"); + + b.Property("ExecutableCode") + .HasColumnType("text"); + + b.Property("MountType") + .HasColumnType("integer"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ParentRuleId") + .HasColumnType("uuid"); + + b.Property("RuleDesc") + .HasColumnType("text"); + + b.Property("RuleStatus") + .HasColumnType("integer"); + + b.Property("RuleType") + .HasColumnType("integer"); + + b.Property("Runner") + .HasColumnType("text"); + + b.Property("SubVersion") + .HasColumnType("double precision"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("Version") + .HasColumnType("double precision"); + + b.HasKey("RuleId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("FlowRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("DefaultDeviceType") + .HasColumnType("integer"); + + b.Property("DefaultIdentityType") + .HasColumnType("integer"); + + b.Property("DefaultTimeout") + .HasColumnType("integer"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("GatewayConfiguration") + .HasColumnType("text"); + + b.Property("GatewayType") + .HasColumnType("integer"); + + b.Property("Icon") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Produces"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Customer") + .HasColumnType("uuid"); + + b.Property("DataType") + .HasColumnType("integer"); + + b.Property("DefaultValue") + .HasColumnType("text"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("Display") + .HasColumnType("boolean"); + + b.Property("DisplayName") + .HasColumnType("text"); + + b.Property("KeyDesc") + .HasColumnType("text"); + + b.Property("KeyName") + .HasColumnType("text"); + + b.Property("Place0") + .HasColumnType("text"); + + b.Property("Place1") + .HasColumnType("text"); + + b.Property("Place2") + .HasColumnType("text"); + + b.Property("Place3") + .HasColumnType("text"); + + b.Property("Place4") + .HasColumnType("text"); + + b.Property("Place5") + .HasColumnType("text"); + + b.Property("PlaceOrder0") + .HasColumnType("text"); + + b.Property("PlaceOrder1") + .HasColumnType("text"); + + b.Property("PlaceOrder2") + .HasColumnType("text"); + + b.Property("PlaceOrder3") + .HasColumnType("text"); + + b.Property("PlaceOrder4") + .HasColumnType("text"); + + b.Property("PlaceOrder5") + .HasColumnType("text"); + + b.Property("ProduceId") + .HasColumnType("uuid"); + + b.Property("Tag") + .HasColumnType("text"); + + b.Property("Unit") + .HasColumnType("text"); + + b.Property("UnitConvert") + .HasColumnType("boolean"); + + b.Property("UnitExpression") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ProduceId"); + + b.ToTable("ProduceDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddedDate") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiryDate") + .HasColumnType("timestamp with time zone"); + + b.Property("IsRevorked") + .HasColumnType("boolean"); + + b.Property("IsUsed") + .HasColumnType("boolean"); + + b.Property("JwtId") + .HasColumnType("text"); + + b.Property("Token") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("IdentityUserId") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("IdentityUserId"); + + b.HasIndex("TenantId"); + + b.ToTable("Relationship"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.Property("ExecutorId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("DefaultConfig") + .HasColumnType("text"); + + b.Property("ExecutorDesc") + .HasColumnType("text"); + + b.Property("ExecutorName") + .HasColumnType("text"); + + b.Property("ExecutorStatus") + .HasColumnType("integer"); + + b.Property("MataData") + .HasColumnType("text"); + + b.Property("Path") + .HasColumnType("text"); + + b.Property("Tag") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("TestStatus") + .HasColumnType("integer"); + + b.Property("Tester") + .HasColumnType("uuid"); + + b.Property("TesterDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("TypeName") + .HasColumnType("text"); + + b.HasKey("ExecutorId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("RuleTaskExecutors"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreateDateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Creator") + .HasColumnType("uuid"); + + b.Property("CustomerId") + .HasColumnType("uuid"); + + b.Property("EventDesc") + .HasColumnType("text"); + + b.Property("EventName") + .HasColumnType("text"); + + b.Property("EventNameSpace") + .HasColumnType("text"); + + b.Property("EventParam") + .HasColumnType("text"); + + b.Property("EventStatus") + .HasColumnType("integer"); + + b.Property("EventTag") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("SubscriptionEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.Property("BindId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("EventId") + .HasColumnType("uuid"); + + b.Property("RuleTaskExecutorExecutorId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SubscriptionEventId") + .HasColumnType("uuid"); + + b.Property("TaskConfig") + .HasColumnType("text"); + + b.HasKey("BindId"); + + b.HasIndex("RuleTaskExecutorExecutorId"); + + b.HasIndex("SubscriptionEventId"); + + b.ToTable("SubscriptionTasks"); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryData", b => + { + b.Property("DeviceId") + .HasColumnType("uuid") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("text") + .HasColumnOrder(2); + + b.Property("DateTime") + .HasColumnType("timestamp with time zone") + .HasColumnOrder(3); + + b.Property("DataSide") + .HasColumnType("integer") + .HasColumnOrder(4); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("bytea"); + + b.Property("Value_Boolean") + .HasColumnType("boolean"); + + b.Property("Value_DateTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Value_Double") + .HasColumnType("double precision"); + + b.Property("Value_Json") + .HasColumnType("jsonb"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("text"); + + b.Property("Value_XML") + .HasColumnType("xml"); + + b.HasKey("DeviceId", "KeyName", "DateTime"); + + b.HasIndex("DeviceId"); + + b.HasIndex("KeyName"); + + b.HasIndex("DeviceId", "KeyName"); + + b.ToTable("TelemetryData"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Address") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("Deleted") + .HasColumnType("boolean"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("ZipCode") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Tenant"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(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("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(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("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("text"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("IoTSharp.Data.AttributeLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(2); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.HasBaseType("IoTSharp.Data.Device"); + + b.HasDiscriminator().HasValue(1); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.HasIndex("OwnerId"); + + b.HasDiscriminator().HasValue(5); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(4); + }); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.HasOne("IoTSharp.Data.Asset", null) + .WithMany("OwnedAssets") + .HasForeignKey("AssetId"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Customers") + .HasForeignKey("TenantId"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.HasOne("IoTSharp.Data.AuthorizedKey", null) + .WithMany("Devices") + .HasForeignKey("AuthorizedKeyId"); + + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany("Devices") + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Gateway", "Owner") + .WithMany("Children") + .HasForeignKey("OwnerId"); + + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Devices") + .HasForeignKey("ProduceId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Devices") + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Owner"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.DeviceDiagram", "DeviceDiagram") + .WithMany() + .HasForeignKey("DeviceDiagramDiagramId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("DeviceDiagram"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithOne("DeviceIdentity") + .HasForeignKey("IoTSharp.Data.DeviceIdentity", "DeviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany("DeviceModelCommands") + .HasForeignKey("DeviceModelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceModel"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithMany() + .HasForeignKey("DeviceId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("Device"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "Executor") + .WithMany() + .HasForeignKey("ExecutorId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Executor"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.HasOne("IoTSharp.Data.BaseEvent", "BaseEvent") + .WithMany() + .HasForeignKey("BaseEventEventId"); + + b.HasOne("IoTSharp.Data.Flow", "Flow") + .WithMany() + .HasForeignKey("FlowId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("BaseEvent"); + + b.Navigation("Flow"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Dictionaries") + .HasForeignKey("ProduceId"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "IdentityUser") + .WithMany() + .HasForeignKey("IdentityUserId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("IdentityUser"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "RuleTaskExecutor") + .WithMany() + .HasForeignKey("RuleTaskExecutorExecutorId"); + + b.HasOne("IoTSharp.Data.SubscriptionEvent", "Subscription") + .WithMany() + .HasForeignKey("SubscriptionEventId"); + + b.Navigation("RuleTaskExecutor"); + + b.Navigation("Subscription"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasOne("IoTSharp.Data.Produce", "Owner") + .WithMany("DefaultAttributes") + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Navigation("OwnedAssets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Navigation("DeviceIdentity"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Navigation("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Navigation("DefaultAttributes"); + + b.Navigation("Devices"); + + b.Navigation("Dictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Navigation("Customers"); + + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.Navigation("Children"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.cs b/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.cs new file mode 100644 index 00000000..34b0c633 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/20221202074042_ModifyEmailSpell.cs @@ -0,0 +1,95 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IoTSharp.Migrations +{ + public partial class ModifyEmailSpell : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "EMail", + table: "Tenant", + newName: "Email"); + + migrationBuilder.AddColumn( + name: "FlowClass", + table: "Flows", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowIcon", + table: "Flows", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowNameSpace", + table: "Flows", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowShapeType", + table: "Flows", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowTag", + table: "Flows", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "Left", + table: "Flows", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "Top", + table: "Flows", + type: "text", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "FlowClass", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowIcon", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowNameSpace", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowShapeType", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowTag", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "Left", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "Top", + table: "Flows"); + + migrationBuilder.RenameColumn( + name: "Email", + table: "Tenant", + newName: "EMail"); + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/ApplicationDbContextModelSnapshot.cs b/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/ApplicationDbContextModelSnapshot.cs index 140aadd6..e62f8ed6 100644 --- a/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/IoTSharp.Data.Storage/IoTSharp.Data.PostgreSQL/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1256,12 +1256,27 @@ namespace IoTSharp.Migrations b.Property("ExecutorId") .HasColumnType("uuid"); + b.Property("FlowClass") + .HasColumnType("text"); + + b.Property("FlowIcon") + .HasColumnType("text"); + + b.Property("FlowNameSpace") + .HasColumnType("text"); + b.Property("FlowRuleRuleId") .HasColumnType("uuid"); + b.Property("FlowShapeType") + .HasColumnType("text"); + b.Property("FlowStatus") .HasColumnType("integer"); + b.Property("FlowTag") + .HasColumnType("text"); + b.Property("FlowType") .HasColumnType("text"); @@ -1274,6 +1289,9 @@ namespace IoTSharp.Migrations b.Property("Incoming") .HasColumnType("text"); + b.Property("Left") + .HasColumnType("text"); + b.Property("NodeProcessClass") .HasColumnType("text"); @@ -1316,6 +1334,9 @@ namespace IoTSharp.Migrations b.Property("TesterDateTime") .HasColumnType("timestamp with time zone"); + b.Property("Top") + .HasColumnType("text"); + b.Property("bpmnid") .HasColumnType("text"); @@ -1858,7 +1879,7 @@ namespace IoTSharp.Migrations b.Property("Deleted") .HasColumnType("boolean"); - b.Property("EMail") + b.Property("Email") .HasColumnType("text"); b.Property("Name") diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.Designer.cs b/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.Designer.cs new file mode 100644 index 00000000..72056b46 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.Designer.cs @@ -0,0 +1,2665 @@ +// +using System; +using IoTSharp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IoTSharp.Data.SqlServer.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20221202074541_ModifyEmailSpell")] + partial class ModifyEmailSpell + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.10") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AckDateTime") + .HasColumnType("datetime2"); + + b.Property("AlarmDetail") + .HasColumnType("nvarchar(max)"); + + b.Property("AlarmStatus") + .HasColumnType("int"); + + b.Property("AlarmType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClearDateTime") + .HasColumnType("datetime2"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("EndDateTime") + .HasColumnType("datetime2"); + + b.Property("OriginatorId") + .HasColumnType("uniqueidentifier"); + + b.Property("OriginatorType") + .HasColumnType("int"); + + b.Property("Propagate") + .HasColumnType("bit"); + + b.Property("Serverity") + .HasColumnType("int"); + + b.Property("StartDateTime") + .HasColumnType("datetime2"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Alarms"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AssetType") + .HasColumnType("nvarchar(max)"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Assets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AssetId") + .HasColumnType("uniqueidentifier"); + + b.Property("DataCatalog") + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("DeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("KeyName") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("AssetId"); + + b.ToTable("AssetRelations"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ActionData") + .HasColumnType("nvarchar(max)"); + + b.Property("ActionName") + .HasColumnType("nvarchar(max)"); + + b.Property("ActionResult") + .HasColumnType("nvarchar(max)"); + + b.Property("ActiveDateTime") + .HasColumnType("datetime2"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("ObjectID") + .HasColumnType("uniqueidentifier"); + + b.Property("ObjectName") + .HasColumnType("nvarchar(max)"); + + b.Property("ObjectType") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("nvarchar(max)"); + + b.Property("UserName") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuditLog"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuthToken") + .HasColumnType("nvarchar(max)"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuthorizedKeys"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionary", b => + { + b.Property("DictionaryId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DictionaryId"), 1L, 1); + + b.Property("Dictionary18NKeyName") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryColor") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryGroupId") + .HasColumnType("bigint"); + + b.Property("DictionaryIcon") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryName") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryPattern") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryStatus") + .HasColumnType("int"); + + b.Property("DictionaryTag") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryValue") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryValueType") + .HasColumnType("int"); + + b.Property("DictionaryValueTypeName") + .HasColumnType("nvarchar(max)"); + + b.HasKey("DictionaryId"); + + b.ToTable("BaseDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionaryGroup", b => + { + b.Property("DictionaryGroupId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DictionaryGroupId"), 1L, 1); + + b.Property("DictionaryGroup18NKeyName") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryGroupDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryGroupKey") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryGroupName") + .HasColumnType("nvarchar(max)"); + + b.Property("DictionaryGroupStatus") + .HasColumnType("int"); + + b.Property("DictionaryGroupValueType") + .HasColumnType("int"); + + b.Property("DictionaryGroupValueTypeName") + .HasColumnType("nvarchar(max)"); + + b.HasKey("DictionaryGroupId"); + + b.ToTable("BaseDictionaryGroups"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("BizData") + .HasColumnType("nvarchar(max)"); + + b.Property("Bizid") + .HasColumnType("nvarchar(max)"); + + b.Property("CreaterDateTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("EventDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("EventName") + .HasColumnType("nvarchar(max)"); + + b.Property("EventStaus") + .HasColumnType("int"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uniqueidentifier"); + + b.Property("MataData") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("BaseEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseI18N", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("AddDate") + .HasColumnType("datetime2"); + + b.Property("KeyName") + .HasColumnType("nvarchar(max)"); + + b.Property("ResouceDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("ResouceGroupId") + .HasColumnType("int"); + + b.Property("ResourceId") + .HasColumnType("bigint"); + + b.Property("ResourceKey") + .HasColumnType("nvarchar(max)"); + + b.Property("ResourceTag") + .HasColumnType("nvarchar(max)"); + + b.Property("ResourceType") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("ValueBG") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueCS") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueDA") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueDEDE") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueELGR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueENGR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueENUS") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueESES") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueFI") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueFRFR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueHE") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueHRHR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueHU") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueITIT") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueJAJP") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueKOKR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueNL") + .HasColumnType("nvarchar(max)"); + + b.Property("ValuePLPL") + .HasColumnType("nvarchar(max)"); + + b.Property("ValuePT") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueSLSL") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueSR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueSV") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueTRTR") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueUK") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueVI") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueZHCN") + .HasColumnType("nvarchar(max)"); + + b.Property("ValueZHTW") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("BaseI18Ns"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Address") + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .HasColumnType("nvarchar(max)"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .HasColumnType("nvarchar(max)"); + + b.Property("Province") + .HasColumnType("nvarchar(max)"); + + b.Property("Street") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Customer"); + }); + + modelBuilder.Entity("IoTSharp.Data.DataStorage", b => + { + b.Property("Catalog") + .HasColumnType("int") + .HasColumnOrder(0); + + b.Property("DeviceId") + .HasColumnType("uniqueidentifier") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("nvarchar(450)") + .HasColumnOrder(2); + + b.Property("DataSide") + .HasColumnType("int") + .HasColumnOrder(4); + + b.Property("DateTime") + .HasColumnType("datetime2") + .HasColumnOrder(3); + + b.Property("Type") + .HasColumnType("int") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("varbinary(max)"); + + b.Property("Value_Boolean") + .HasColumnType("bit"); + + b.Property("Value_DateTime") + .HasColumnType("datetime2"); + + b.Property("Value_Double") + .HasColumnType("float"); + + b.Property("Value_Json") + .HasColumnType("nvarchar(max)"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("nvarchar(max)"); + + b.Property("Value_XML") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Catalog", "DeviceId", "KeyName"); + + b.HasIndex("Catalog"); + + b.HasIndex("Catalog", "DeviceId"); + + b.ToTable("DataStorage"); + + b.HasDiscriminator("Catalog").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizedKeyId") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("DeviceModelId") + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceType") + .HasColumnType("int"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("OwnerId") + .HasColumnType("uniqueidentifier"); + + b.Property("ProduceId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Timeout") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizedKeyId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("ProduceId"); + + b.HasIndex("TenantId"); + + b.ToTable("Device"); + + b.HasDiscriminator("DeviceType").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.Property("DiagramId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetimeoffset"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DiagramDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("DiagramImage") + .HasColumnType("nvarchar(max)"); + + b.Property("DiagramName") + .HasColumnType("nvarchar(max)"); + + b.Property("DiagramStatus") + .HasColumnType("int"); + + b.Property("IsDefault") + .HasColumnType("bit"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("DiagramId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceDiagrams"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.Property("GraphId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceDiagramDiagramId") + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("GraphElementId") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphFill") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphHeight") + .HasColumnType("int"); + + b.Property("GraphPostionX") + .HasColumnType("int"); + + b.Property("GraphPostionY") + .HasColumnType("int"); + + b.Property("GraphShape") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphStroke") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphStrokeWidth") + .HasColumnType("int"); + + b.Property("GraphTextAnchor") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphTextFill") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphTextFontFamily") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphTextFontSize") + .HasColumnType("int"); + + b.Property("GraphTextRefX") + .HasColumnType("int"); + + b.Property("GraphTextRefY") + .HasColumnType("int"); + + b.Property("GraphTextVerticalAnchor") + .HasColumnType("nvarchar(max)"); + + b.Property("GraphWidth") + .HasColumnType("int"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("GraphId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("DeviceDiagramDiagramId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphs"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.Property("ToolBoxId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CommondParam") + .HasColumnType("nvarchar(max)"); + + b.Property("CommondType") + .HasColumnType("nvarchar(max)"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("ToolBoxIcon") + .HasColumnType("nvarchar(max)"); + + b.Property("ToolBoxName") + .HasColumnType("nvarchar(max)"); + + b.Property("ToolBoxOffsetLeftPer") + .HasColumnType("int"); + + b.Property("ToolBoxOffsetTopPer") + .HasColumnType("int"); + + b.Property("ToolBoxOffsetX") + .HasColumnType("int"); + + b.Property("ToolBoxOffsetY") + .HasColumnType("int"); + + b.Property("ToolBoxRequestUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ToolBoxStatus") + .HasColumnType("int"); + + b.Property("ToolBoxType") + .HasColumnType("nvarchar(max)"); + + b.HasKey("ToolBoxId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphToolBoxes"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("IdentityId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IdentityType") + .HasColumnType("int"); + + b.Property("IdentityValue") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId") + .IsUnique(); + + b.ToTable("DeviceIdentities"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Property("DeviceModelId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDateTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("ModelDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("ModelName") + .HasColumnType("nvarchar(max)"); + + b.Property("ModelStatus") + .HasColumnType("int"); + + b.HasKey("DeviceModelId"); + + b.ToTable("DeviceModels"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.Property("CommandId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CommandI18N") + .HasColumnType("nvarchar(max)"); + + b.Property("CommandName") + .HasColumnType("nvarchar(max)"); + + b.Property("CommandParams") + .HasColumnType("nvarchar(max)"); + + b.Property("CommandStatus") + .HasColumnType("int"); + + b.Property("CommandTemplate") + .HasColumnType("nvarchar(max)"); + + b.Property("CommandTitle") + .HasColumnType("nvarchar(max)"); + + b.Property("CommandType") + .HasColumnType("int"); + + b.Property("CreateDateTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceModelId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("CommandId"); + + b.HasIndex("DeviceModelId"); + + b.ToTable("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePort", b => + { + b.Property("PortId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("bigint"); + + b.Property("DeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("PortDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("PortElementId") + .HasColumnType("nvarchar(max)"); + + b.Property("PortName") + .HasColumnType("nvarchar(max)"); + + b.Property("PortPhyType") + .HasColumnType("int"); + + b.Property("PortPic") + .HasColumnType("nvarchar(max)"); + + b.Property("PortStatus") + .HasColumnType("int"); + + b.Property("PortType") + .HasColumnType("int"); + + b.HasKey("PortId"); + + b.ToTable("DevicePorts"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePortMapping", b => + { + b.Property("MappingId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("MappingIndex") + .HasColumnType("int"); + + b.Property("MappingStatus") + .HasColumnType("int"); + + b.Property("SourceDeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceElementId") + .HasColumnType("nvarchar(max)"); + + b.Property("SourceId") + .HasColumnType("nvarchar(max)"); + + b.Property("TargeId") + .HasColumnType("nvarchar(max)"); + + b.Property("TargetDeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetElementId") + .HasColumnType("nvarchar(max)"); + + b.HasKey("MappingId"); + + b.ToTable("DevicePortMappings"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.Property("DeviceRuleId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConfigDateTime") + .HasColumnType("datetime2"); + + b.Property("ConfigUser") + .HasColumnType("uniqueidentifier"); + + b.Property("DeviceId") + .HasColumnType("uniqueidentifier"); + + b.Property("EnableTrace") + .HasColumnType("int"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("DeviceRuleId"); + + b.HasIndex("DeviceId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("DeviceRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.Property("FieldId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("FieldId"), 1L, 1); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("FieldCode") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldCreateDate") + .HasColumnType("datetime2"); + + b.Property("FieldEditDate") + .HasColumnType("datetime2"); + + b.Property("FieldI18nKey") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldMaxLength") + .HasColumnType("int"); + + b.Property("FieldName") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldPattern") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldPocoTypeName") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldStatus") + .HasColumnType("int"); + + b.Property("FieldUIElement") + .HasColumnType("bigint"); + + b.Property("FieldUIElementSchema") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldUnit") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldValue") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldValueDataSource") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldValueLocalDataSource") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldValueType") + .HasColumnType("int"); + + b.Property("FieldValueTypeName") + .HasColumnType("nvarchar(max)"); + + b.Property("FormId") + .HasColumnType("bigint"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("IsRequired") + .HasColumnType("bit"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("FieldId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.Property("FieldValueId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("FieldValueId"), 1L, 1); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("FieldCode") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldCreateDate") + .HasColumnType("datetime2"); + + b.Property("FieldId") + .HasColumnType("bigint"); + + b.Property("FieldName") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldUnit") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldValue") + .HasColumnType("nvarchar(max)"); + + b.Property("FieldValueType") + .HasColumnType("bigint"); + + b.Property("FromId") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("FieldValueId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldValueInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.Property("FormId") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("FormId"), 1L, 1); + + b.Property("BizId") + .HasColumnType("bigint"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("FormCreator") + .HasColumnType("bigint"); + + b.Property("FormDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("FormLayout") + .HasColumnType("nvarchar(max)"); + + b.Property("FormName") + .HasColumnType("nvarchar(max)"); + + b.Property("FormSchame") + .HasColumnType("nvarchar(max)"); + + b.Property("FormStatus") + .HasColumnType("int"); + + b.Property("FromCreateDate") + .HasColumnType("datetime2"); + + b.Property("IsCompact") + .HasColumnType("bit"); + + b.Property("ModelClass") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Url") + .HasColumnType("nvarchar(max)"); + + b.HasKey("FormId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.Property("FlowId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Conditionexpression") + .HasColumnType("nvarchar(max)"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("CreateId") + .HasColumnType("uniqueidentifier"); + + b.Property("Createor") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("ExecutorId") + .HasColumnType("uniqueidentifier"); + + b.Property("FlowClass") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowIcon") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowNameSpace") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uniqueidentifier"); + + b.Property("FlowShapeType") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowStatus") + .HasColumnType("int"); + + b.Property("FlowTag") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowType") + .HasColumnType("nvarchar(max)"); + + b.Property("Flowdesc") + .HasColumnType("nvarchar(max)"); + + b.Property("Flowname") + .HasColumnType("nvarchar(max)"); + + b.Property("Incoming") + .HasColumnType("nvarchar(max)"); + + b.Property("Left") + .HasColumnType("nvarchar(max)"); + + b.Property("NodeProcessClass") + .HasColumnType("nvarchar(max)"); + + b.Property("NodeProcessMethod") + .HasColumnType("nvarchar(max)"); + + b.Property("NodeProcessParams") + .HasColumnType("nvarchar(max)"); + + b.Property("NodeProcessScript") + .HasColumnType("nvarchar(max)"); + + b.Property("NodeProcessScriptType") + .HasColumnType("nvarchar(max)"); + + b.Property("NodeProcessType") + .HasColumnType("nvarchar(max)"); + + b.Property("ObjectId") + .HasColumnType("nvarchar(max)"); + + b.Property("Outgoing") + .HasColumnType("nvarchar(max)"); + + b.Property("SourceId") + .HasColumnType("nvarchar(max)"); + + b.Property("TargetId") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TestStatus") + .HasColumnType("int"); + + b.Property("Tester") + .HasColumnType("uniqueidentifier"); + + b.Property("TesterDateTime") + .HasColumnType("datetime2"); + + b.Property("Top") + .HasColumnType("nvarchar(max)"); + + b.Property("bpmnid") + .HasColumnType("nvarchar(max)"); + + b.HasKey("FlowId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("ExecutorId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("Flows"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.Property("OperationId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AddDate") + .HasColumnType("datetime2"); + + b.Property("BaseEventEventId") + .HasColumnType("uniqueidentifier"); + + b.Property("BizId") + .HasColumnType("nvarchar(max)"); + + b.Property("Data") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowId") + .HasColumnType("uniqueidentifier"); + + b.Property("FlowRuleRuleId") + .HasColumnType("uniqueidentifier"); + + b.Property("NodeStatus") + .HasColumnType("int"); + + b.Property("OperationDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("Step") + .HasColumnType("int"); + + b.Property("Tag") + .HasColumnType("nvarchar(max)"); + + b.Property("bpmnid") + .HasColumnType("nvarchar(max)"); + + b.HasKey("OperationId"); + + b.HasIndex("BaseEventEventId"); + + b.HasIndex("FlowId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("FlowOperations"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.Property("RuleId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreatTime") + .HasColumnType("datetime2"); + + b.Property("CreateId") + .HasColumnType("uniqueidentifier"); + + b.Property("Creator") + .HasColumnType("nvarchar(max)"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefinitionsXml") + .HasColumnType("nvarchar(max)"); + + b.Property("Describes") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutableCode") + .HasColumnType("nvarchar(max)"); + + b.Property("MountType") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ParentRuleId") + .HasColumnType("uniqueidentifier"); + + b.Property("RuleDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("RuleStatus") + .HasColumnType("int"); + + b.Property("RuleType") + .HasColumnType("int"); + + b.Property("Runner") + .HasColumnType("nvarchar(max)"); + + b.Property("SubVersion") + .HasColumnType("float"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Version") + .HasColumnType("float"); + + b.HasKey("RuleId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("FlowRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultDeviceType") + .HasColumnType("int"); + + b.Property("DefaultIdentityType") + .HasColumnType("int"); + + b.Property("DefaultTimeout") + .HasColumnType("int"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("GatewayConfiguration") + .HasColumnType("nvarchar(max)"); + + b.Property("GatewayType") + .HasColumnType("int"); + + b.Property("Icon") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Produces"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Customer") + .HasColumnType("uniqueidentifier"); + + b.Property("DataType") + .HasColumnType("int"); + + b.Property("DefaultValue") + .HasColumnType("nvarchar(max)"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Display") + .HasColumnType("bit"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("KeyDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("KeyName") + .HasColumnType("nvarchar(max)"); + + b.Property("Place0") + .HasColumnType("nvarchar(max)"); + + b.Property("Place1") + .HasColumnType("nvarchar(max)"); + + b.Property("Place2") + .HasColumnType("nvarchar(max)"); + + b.Property("Place3") + .HasColumnType("nvarchar(max)"); + + b.Property("Place4") + .HasColumnType("nvarchar(max)"); + + b.Property("Place5") + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceOrder0") + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceOrder1") + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceOrder2") + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceOrder3") + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceOrder4") + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceOrder5") + .HasColumnType("nvarchar(max)"); + + b.Property("ProduceId") + .HasColumnType("uniqueidentifier"); + + b.Property("Tag") + .HasColumnType("nvarchar(max)"); + + b.Property("Unit") + .HasColumnType("nvarchar(max)"); + + b.Property("UnitConvert") + .HasColumnType("bit"); + + b.Property("UnitExpression") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ProduceId"); + + b.ToTable("ProduceDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AddedDate") + .HasColumnType("datetime2"); + + b.Property("ExpiryDate") + .HasColumnType("datetime2"); + + b.Property("IsRevorked") + .HasColumnType("bit"); + + b.Property("IsUsed") + .HasColumnType("bit"); + + b.Property("JwtId") + .HasColumnType("nvarchar(max)"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("IdentityUserId") + .HasColumnType("nvarchar(450)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("IdentityUserId"); + + b.HasIndex("TenantId"); + + b.ToTable("Relationship"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.Property("ExecutorId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AddDateTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultConfig") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutorDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutorName") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutorStatus") + .HasColumnType("int"); + + b.Property("MataData") + .HasColumnType("nvarchar(max)"); + + b.Property("Path") + .HasColumnType("nvarchar(max)"); + + b.Property("Tag") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TestStatus") + .HasColumnType("int"); + + b.Property("Tester") + .HasColumnType("uniqueidentifier"); + + b.Property("TesterDateTime") + .HasColumnType("datetime2"); + + b.Property("TypeName") + .HasColumnType("nvarchar(max)"); + + b.HasKey("ExecutorId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("RuleTaskExecutors"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDateTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CustomerId") + .HasColumnType("uniqueidentifier"); + + b.Property("EventDesc") + .HasColumnType("nvarchar(max)"); + + b.Property("EventName") + .HasColumnType("nvarchar(max)"); + + b.Property("EventNameSpace") + .HasColumnType("nvarchar(max)"); + + b.Property("EventParam") + .HasColumnType("nvarchar(max)"); + + b.Property("EventStatus") + .HasColumnType("int"); + + b.Property("EventTag") + .HasColumnType("nvarchar(max)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("SubscriptionEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.Property("BindId") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EventId") + .HasColumnType("uniqueidentifier"); + + b.Property("RuleTaskExecutorExecutorId") + .HasColumnType("uniqueidentifier"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("SubscriptionEventId") + .HasColumnType("uniqueidentifier"); + + b.Property("TaskConfig") + .HasColumnType("nvarchar(max)"); + + b.HasKey("BindId"); + + b.HasIndex("RuleTaskExecutorExecutorId"); + + b.HasIndex("SubscriptionEventId"); + + b.ToTable("SubscriptionTasks"); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryData", b => + { + b.Property("DeviceId") + .HasColumnType("uniqueidentifier") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("nvarchar(450)") + .HasColumnOrder(2); + + b.Property("DateTime") + .HasColumnType("datetime2") + .HasColumnOrder(3); + + b.Property("DataSide") + .HasColumnType("int") + .HasColumnOrder(4); + + b.Property("Type") + .HasColumnType("int") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("varbinary(max)"); + + b.Property("Value_Boolean") + .HasColumnType("bit"); + + b.Property("Value_DateTime") + .HasColumnType("datetime2"); + + b.Property("Value_Double") + .HasColumnType("float"); + + b.Property("Value_Json") + .HasColumnType("nvarchar(max)"); + + b.Property("Value_Long") + .HasColumnType("bigint"); + + b.Property("Value_String") + .HasColumnType("nvarchar(max)"); + + b.Property("Value_XML") + .HasColumnType("nvarchar(max)"); + + b.HasKey("DeviceId", "KeyName", "DateTime"); + + b.HasIndex("DeviceId"); + + b.HasIndex("KeyName"); + + b.HasIndex("DeviceId", "KeyName"); + + b.ToTable("TelemetryData"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Address") + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .HasColumnType("nvarchar(max)"); + + b.Property("Country") + .HasColumnType("nvarchar(max)"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Phone") + .HasColumnType("nvarchar(max)"); + + b.Property("Province") + .HasColumnType("nvarchar(max)"); + + b.Property("Street") + .HasColumnType("nvarchar(max)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Tenant"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex") + .HasFilter("[NormalizedName] IS NOT NULL"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("nvarchar(450)"); + + b.Property("AccessFailedCount") + .HasColumnType("int"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("bit"); + + b.Property("LockoutEnabled") + .HasColumnType("bit"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("PasswordHash") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("bit"); + + b.Property("SecurityStamp") + .HasColumnType("nvarchar(max)"); + + b.Property("TwoFactorEnabled") + .HasColumnType("bit"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex") + .HasFilter("[NormalizedUserName] IS NOT NULL"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClaimType") + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderKey") + .HasColumnType("nvarchar(450)"); + + b.Property("ProviderDisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("LoginProvider") + .HasColumnType("nvarchar(450)"); + + b.Property("Name") + .HasColumnType("nvarchar(450)"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("IoTSharp.Data.AttributeLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(2); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.HasBaseType("IoTSharp.Data.Device"); + + b.HasDiscriminator().HasValue(1); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.Property("OwnerId") + .HasColumnType("uniqueidentifier"); + + b.HasIndex("OwnerId"); + + b.HasDiscriminator().HasValue(5); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(4); + }); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.HasOne("IoTSharp.Data.Asset", null) + .WithMany("OwnedAssets") + .HasForeignKey("AssetId"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Customers") + .HasForeignKey("TenantId"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.HasOne("IoTSharp.Data.AuthorizedKey", null) + .WithMany("Devices") + .HasForeignKey("AuthorizedKeyId"); + + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany("Devices") + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Gateway", "Owner") + .WithMany("Children") + .HasForeignKey("OwnerId"); + + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Devices") + .HasForeignKey("ProduceId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Devices") + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Owner"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.DeviceDiagram", "DeviceDiagram") + .WithMany() + .HasForeignKey("DeviceDiagramDiagramId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("DeviceDiagram"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithOne("DeviceIdentity") + .HasForeignKey("IoTSharp.Data.DeviceIdentity", "DeviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany("DeviceModelCommands") + .HasForeignKey("DeviceModelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceModel"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithMany() + .HasForeignKey("DeviceId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("Device"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "Executor") + .WithMany() + .HasForeignKey("ExecutorId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Executor"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.HasOne("IoTSharp.Data.BaseEvent", "BaseEvent") + .WithMany() + .HasForeignKey("BaseEventEventId"); + + b.HasOne("IoTSharp.Data.Flow", "Flow") + .WithMany() + .HasForeignKey("FlowId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("BaseEvent"); + + b.Navigation("Flow"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Dictionaries") + .HasForeignKey("ProduceId"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "IdentityUser") + .WithMany() + .HasForeignKey("IdentityUserId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("IdentityUser"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "RuleTaskExecutor") + .WithMany() + .HasForeignKey("RuleTaskExecutorExecutorId"); + + b.HasOne("IoTSharp.Data.SubscriptionEvent", "Subscription") + .WithMany() + .HasForeignKey("SubscriptionEventId"); + + b.Navigation("RuleTaskExecutor"); + + b.Navigation("Subscription"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasOne("IoTSharp.Data.Produce", "Owner") + .WithMany("DefaultAttributes") + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Navigation("OwnedAssets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Navigation("DeviceIdentity"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Navigation("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Navigation("DefaultAttributes"); + + b.Navigation("Devices"); + + b.Navigation("Dictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Navigation("Customers"); + + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.Navigation("Children"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.cs b/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.cs new file mode 100644 index 00000000..fac196f2 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/20221202074541_ModifyEmailSpell.cs @@ -0,0 +1,95 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IoTSharp.Data.SqlServer.Migrations +{ + public partial class ModifyEmailSpell : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "EMail", + table: "Tenant", + newName: "Email"); + + migrationBuilder.AddColumn( + name: "FlowClass", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowIcon", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowNameSpace", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowShapeType", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "FlowTag", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "Left", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "Top", + table: "Flows", + type: "nvarchar(max)", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "FlowClass", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowIcon", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowNameSpace", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowShapeType", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowTag", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "Left", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "Top", + table: "Flows"); + + migrationBuilder.RenameColumn( + name: "Email", + table: "Tenant", + newName: "EMail"); + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/ApplicationDbContextModelSnapshot.cs b/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/ApplicationDbContextModelSnapshot.cs index 169d28f9..9f0ca6b5 100644 --- a/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/IoTSharp.Data.Storage/IoTSharp.Data.SqlServer/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1256,12 +1256,27 @@ namespace IoTSharp.Data.SqlServer.Migrations b.Property("ExecutorId") .HasColumnType("uniqueidentifier"); + b.Property("FlowClass") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowIcon") + .HasColumnType("nvarchar(max)"); + + b.Property("FlowNameSpace") + .HasColumnType("nvarchar(max)"); + b.Property("FlowRuleRuleId") .HasColumnType("uniqueidentifier"); + b.Property("FlowShapeType") + .HasColumnType("nvarchar(max)"); + b.Property("FlowStatus") .HasColumnType("int"); + b.Property("FlowTag") + .HasColumnType("nvarchar(max)"); + b.Property("FlowType") .HasColumnType("nvarchar(max)"); @@ -1274,6 +1289,9 @@ namespace IoTSharp.Data.SqlServer.Migrations b.Property("Incoming") .HasColumnType("nvarchar(max)"); + b.Property("Left") + .HasColumnType("nvarchar(max)"); + b.Property("NodeProcessClass") .HasColumnType("nvarchar(max)"); @@ -1316,6 +1334,9 @@ namespace IoTSharp.Data.SqlServer.Migrations b.Property("TesterDateTime") .HasColumnType("datetime2"); + b.Property("Top") + .HasColumnType("nvarchar(max)"); + b.Property("bpmnid") .HasColumnType("nvarchar(max)"); @@ -1858,7 +1879,7 @@ namespace IoTSharp.Data.SqlServer.Migrations b.Property("Deleted") .HasColumnType("bit"); - b.Property("EMail") + b.Property("Email") .HasColumnType("nvarchar(max)"); b.Property("Name") diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.Designer.cs b/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.Designer.cs new file mode 100644 index 00000000..4b288182 --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.Designer.cs @@ -0,0 +1,2894 @@ +// +using System; +using IoTSharp.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace IoTSharp.Data.Sqlite.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20221202074402_ModifyEmailSpell")] + partial class ModifyEmailSpell + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("NOCASE") + .HasAnnotation("ProductVersion", "6.0.10"); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AckDateTime") + .HasColumnType("TEXT"); + + b.Property("AlarmDetail") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("AlarmStatus") + .HasColumnType("INTEGER"); + + b.Property("AlarmType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ClearDateTime") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("EndDateTime") + .HasColumnType("TEXT"); + + b.Property("OriginatorId") + .HasColumnType("TEXT"); + + b.Property("OriginatorType") + .HasColumnType("INTEGER"); + + b.Property("Propagate") + .HasColumnType("INTEGER"); + + b.Property("Serverity") + .HasColumnType("INTEGER"); + + b.Property("StartDateTime") + .HasColumnType("TEXT"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Alarms"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AssetType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("Description") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Assets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AssetId") + .HasColumnType("TEXT"); + + b.Property("DataCatalog") + .HasColumnType("INTEGER"); + + b.Property("Description") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("KeyName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("AssetId"); + + b.ToTable("AssetRelations"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ActionData") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ActionName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ActionResult") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ActiveDateTime") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("ObjectID") + .HasColumnType("TEXT"); + + b.Property("ObjectName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ObjectType") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("UserId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("UserName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuditLog"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AuthToken") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("AuthorizedKeys"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionary", b => + { + b.Property("DictionaryId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Dictionary18NKeyName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryColor") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryGroupId") + .HasColumnType("INTEGER"); + + b.Property("DictionaryIcon") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryPattern") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryStatus") + .HasColumnType("INTEGER"); + + b.Property("DictionaryTag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryValueType") + .HasColumnType("INTEGER"); + + b.Property("DictionaryValueTypeName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("DictionaryId"); + + b.ToTable("BaseDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseDictionaryGroup", b => + { + b.Property("DictionaryGroupId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("DictionaryGroup18NKeyName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryGroupDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryGroupKey") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryGroupName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DictionaryGroupStatus") + .HasColumnType("INTEGER"); + + b.Property("DictionaryGroupValueType") + .HasColumnType("INTEGER"); + + b.Property("DictionaryGroupValueTypeName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("DictionaryGroupId"); + + b.ToTable("BaseDictionaryGroups"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("BizData") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Bizid") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CreaterDateTime") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("EventDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EventName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EventStaus") + .HasColumnType("INTEGER"); + + b.Property("FlowRuleRuleId") + .HasColumnType("TEXT"); + + b.Property("MataData") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("BaseEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseI18N", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AddDate") + .HasColumnType("TEXT"); + + b.Property("KeyName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ResouceDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ResouceGroupId") + .HasColumnType("INTEGER"); + + b.Property("ResourceId") + .HasColumnType("INTEGER"); + + b.Property("ResourceKey") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ResourceTag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ResourceType") + .HasColumnType("INTEGER"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("TEXT"); + + b.Property("ValueBG") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueCS") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueDA") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueDEDE") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueELGR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueENGR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueENUS") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueESES") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueFI") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueFRFR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueHE") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueHRHR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueHU") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueITIT") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueJAJP") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueKOKR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueNL") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValuePLPL") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValuePT") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueSLSL") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueSR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueSV") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueTRTR") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueUK") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueVI") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueZHCN") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ValueZHTW") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.ToTable("BaseI18Ns"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Address") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("City") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Country") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("Email") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Phone") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Province") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Street") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("ZipCode") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.ToTable("Customer"); + }); + + modelBuilder.Entity("IoTSharp.Data.DataStorage", b => + { + b.Property("Catalog") + .HasColumnType("INTEGER") + .HasColumnOrder(0); + + b.Property("DeviceId") + .HasColumnType("TEXT") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("TEXT") + .HasColumnOrder(2) + .UseCollation("NOCASE"); + + b.Property("DataSide") + .HasColumnType("INTEGER") + .HasColumnOrder(4); + + b.Property("DateTime") + .HasColumnType("TEXT") + .HasColumnOrder(3); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("BLOB"); + + b.Property("Value_Boolean") + .HasColumnType("INTEGER"); + + b.Property("Value_DateTime") + .HasColumnType("TEXT"); + + b.Property("Value_Double") + .HasColumnType("REAL"); + + b.Property("Value_Json") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Value_Long") + .HasColumnType("INTEGER"); + + b.Property("Value_String") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Value_XML") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Catalog", "DeviceId", "KeyName"); + + b.HasIndex("Catalog"); + + b.HasIndex("Catalog", "DeviceId"); + + b.ToTable("DataStorage"); + + b.HasDiscriminator("Catalog").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AuthorizedKeyId") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("DeviceModelId") + .HasColumnType("TEXT"); + + b.Property("DeviceType") + .HasColumnType("INTEGER"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.Property("ProduceId") + .HasColumnType("TEXT"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("Timeout") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizedKeyId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("OwnerId"); + + b.HasIndex("ProduceId"); + + b.HasIndex("TenantId"); + + b.ToTable("Device"); + + b.HasDiscriminator("DeviceType").HasValue(0); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.Property("DiagramId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreateDate") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("DiagramDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DiagramImage") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DiagramName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("DiagramStatus") + .HasColumnType("INTEGER"); + + b.Property("IsDefault") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("DiagramId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceDiagrams"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.Property("GraphId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreateDate") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("DeviceDiagramDiagramId") + .HasColumnType("TEXT"); + + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("GraphElementId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphFill") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphHeight") + .HasColumnType("INTEGER"); + + b.Property("GraphPostionX") + .HasColumnType("INTEGER"); + + b.Property("GraphPostionY") + .HasColumnType("INTEGER"); + + b.Property("GraphShape") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphStroke") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphStrokeWidth") + .HasColumnType("INTEGER"); + + b.Property("GraphTextAnchor") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphTextFill") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphTextFontFamily") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphTextFontSize") + .HasColumnType("INTEGER"); + + b.Property("GraphTextRefX") + .HasColumnType("INTEGER"); + + b.Property("GraphTextRefY") + .HasColumnType("INTEGER"); + + b.Property("GraphTextVerticalAnchor") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GraphWidth") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("GraphId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("DeviceDiagramDiagramId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphs"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.Property("ToolBoxId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CommondParam") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CommondType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CreateDate") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("DeviceId") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("ToolBoxIcon") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ToolBoxName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ToolBoxOffsetLeftPer") + .HasColumnType("INTEGER"); + + b.Property("ToolBoxOffsetTopPer") + .HasColumnType("INTEGER"); + + b.Property("ToolBoxOffsetX") + .HasColumnType("INTEGER"); + + b.Property("ToolBoxOffsetY") + .HasColumnType("INTEGER"); + + b.Property("ToolBoxRequestUri") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ToolBoxStatus") + .HasColumnType("INTEGER"); + + b.Property("ToolBoxType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("ToolBoxId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DeviceGraphToolBoxes"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("IdentityId") + .IsRequired() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("IdentityType") + .HasColumnType("INTEGER"); + + b.Property("IdentityValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("DeviceId") + .IsUnique(); + + b.ToTable("DeviceIdentities"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Property("DeviceModelId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreateDateTime") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("ModelDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ModelName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ModelStatus") + .HasColumnType("INTEGER"); + + b.HasKey("DeviceModelId"); + + b.ToTable("DeviceModels"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.Property("CommandId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CommandI18N") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CommandName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CommandParams") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CommandStatus") + .HasColumnType("INTEGER"); + + b.Property("CommandTemplate") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CommandTitle") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CommandType") + .HasColumnType("INTEGER"); + + b.Property("CreateDateTime") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("DeviceModelId") + .HasColumnType("TEXT"); + + b.HasKey("CommandId"); + + b.HasIndex("DeviceModelId"); + + b.ToTable("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePort", b => + { + b.Property("PortId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreateDate") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("INTEGER"); + + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("PortDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PortElementId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PortName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PortPhyType") + .HasColumnType("INTEGER"); + + b.Property("PortPic") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PortStatus") + .HasColumnType("INTEGER"); + + b.Property("PortType") + .HasColumnType("INTEGER"); + + b.HasKey("PortId"); + + b.ToTable("DevicePorts"); + }); + + modelBuilder.Entity("IoTSharp.Data.DevicePortMapping", b => + { + b.Property("MappingId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreateDate") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("MappingIndex") + .HasColumnType("INTEGER"); + + b.Property("MappingStatus") + .HasColumnType("INTEGER"); + + b.Property("SourceDeviceId") + .HasColumnType("TEXT"); + + b.Property("SourceElementId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("SourceId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TargeId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TargetDeviceId") + .HasColumnType("TEXT"); + + b.Property("TargetElementId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("MappingId"); + + b.ToTable("DevicePortMappings"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.Property("DeviceRuleId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("ConfigDateTime") + .HasColumnType("TEXT"); + + b.Property("ConfigUser") + .HasColumnType("TEXT"); + + b.Property("DeviceId") + .HasColumnType("TEXT"); + + b.Property("EnableTrace") + .HasColumnType("INTEGER"); + + b.Property("FlowRuleRuleId") + .HasColumnType("TEXT"); + + b.HasKey("DeviceRuleId"); + + b.HasIndex("DeviceId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("DeviceRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.Property("FieldId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("FieldCode") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldCreateDate") + .HasColumnType("TEXT"); + + b.Property("FieldEditDate") + .HasColumnType("TEXT"); + + b.Property("FieldI18nKey") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldMaxLength") + .HasColumnType("INTEGER"); + + b.Property("FieldName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldPattern") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldPocoTypeName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldStatus") + .HasColumnType("INTEGER"); + + b.Property("FieldUIElement") + .HasColumnType("INTEGER"); + + b.Property("FieldUIElementSchema") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldUnit") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldValueDataSource") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldValueLocalDataSource") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldValueType") + .HasColumnType("INTEGER"); + + b.Property("FieldValueTypeName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FormId") + .HasColumnType("INTEGER"); + + b.Property("IsEnabled") + .HasColumnType("INTEGER"); + + b.Property("IsRequired") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("FieldId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.Property("FieldValueId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("BizId") + .HasColumnType("INTEGER"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("FieldCode") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldCreateDate") + .HasColumnType("TEXT"); + + b.Property("FieldId") + .HasColumnType("INTEGER"); + + b.Property("FieldName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldUnit") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FieldValueType") + .HasColumnType("INTEGER"); + + b.Property("FromId") + .HasColumnType("INTEGER"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("FieldValueId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormFieldValueInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.Property("FormId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("BizId") + .HasColumnType("INTEGER"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("FormCreator") + .HasColumnType("INTEGER"); + + b.Property("FormDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FormLayout") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FormName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FormSchame") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FormStatus") + .HasColumnType("INTEGER"); + + b.Property("FromCreateDate") + .HasColumnType("TEXT"); + + b.Property("IsCompact") + .HasColumnType("INTEGER"); + + b.Property("ModelClass") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("Url") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("FormId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("DynamicFormInfos"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.Property("FlowId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Conditionexpression") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CreateDate") + .HasColumnType("TEXT"); + + b.Property("CreateId") + .HasColumnType("TEXT"); + + b.Property("Createor") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("ExecutorId") + .HasColumnType("TEXT"); + + b.Property("FlowClass") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowIcon") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowNameSpace") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowRuleRuleId") + .HasColumnType("TEXT"); + + b.Property("FlowShapeType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowStatus") + .HasColumnType("INTEGER"); + + b.Property("FlowTag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Flowdesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Flowname") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Incoming") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Left") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NodeProcessClass") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NodeProcessMethod") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NodeProcessParams") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NodeProcessScript") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NodeProcessScriptType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NodeProcessType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ObjectId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Outgoing") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("SourceId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TargetId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("TestStatus") + .HasColumnType("INTEGER"); + + b.Property("Tester") + .HasColumnType("TEXT"); + + b.Property("TesterDateTime") + .HasColumnType("TEXT"); + + b.Property("Top") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("bpmnid") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("FlowId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("ExecutorId"); + + b.HasIndex("FlowRuleRuleId"); + + b.HasIndex("TenantId"); + + b.ToTable("Flows"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.Property("OperationId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AddDate") + .HasColumnType("TEXT"); + + b.Property("BaseEventEventId") + .HasColumnType("TEXT"); + + b.Property("BizId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Data") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowId") + .HasColumnType("TEXT"); + + b.Property("FlowRuleRuleId") + .HasColumnType("TEXT"); + + b.Property("NodeStatus") + .HasColumnType("INTEGER"); + + b.Property("OperationDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Step") + .HasColumnType("INTEGER"); + + b.Property("Tag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("bpmnid") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("OperationId"); + + b.HasIndex("BaseEventEventId"); + + b.HasIndex("FlowId"); + + b.HasIndex("FlowRuleRuleId"); + + b.ToTable("FlowOperations"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.Property("RuleId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreatTime") + .HasColumnType("TEXT"); + + b.Property("CreateId") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("DefinitionsXml") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Describes") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ExecutableCode") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("MountType") + .HasColumnType("INTEGER"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ParentRuleId") + .HasColumnType("TEXT"); + + b.Property("RuleDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("RuleStatus") + .HasColumnType("INTEGER"); + + b.Property("RuleType") + .HasColumnType("INTEGER"); + + b.Property("Runner") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("SubVersion") + .HasColumnType("REAL"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("Version") + .HasColumnType("REAL"); + + b.HasKey("RuleId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("FlowRules"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("DefaultDeviceType") + .HasColumnType("INTEGER"); + + b.Property("DefaultIdentityType") + .HasColumnType("INTEGER"); + + b.Property("DefaultTimeout") + .HasColumnType("INTEGER"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("Description") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GatewayConfiguration") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("GatewayType") + .HasColumnType("INTEGER"); + + b.Property("Icon") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("Produces"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Customer") + .HasColumnType("TEXT"); + + b.Property("DataType") + .HasColumnType("INTEGER"); + + b.Property("DefaultValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("Display") + .HasColumnType("INTEGER"); + + b.Property("DisplayName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("KeyDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("KeyName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Place0") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Place1") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Place2") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Place3") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Place4") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Place5") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PlaceOrder0") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PlaceOrder1") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PlaceOrder2") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PlaceOrder3") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PlaceOrder4") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PlaceOrder5") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ProduceId") + .HasColumnType("TEXT"); + + b.Property("Tag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Unit") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("UnitConvert") + .HasColumnType("INTEGER"); + + b.Property("UnitExpression") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("ProduceId"); + + b.ToTable("ProduceDictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AddedDate") + .HasColumnType("TEXT"); + + b.Property("ExpiryDate") + .HasColumnType("TEXT"); + + b.Property("IsRevorked") + .HasColumnType("INTEGER"); + + b.Property("IsUsed") + .HasColumnType("INTEGER"); + + b.Property("JwtId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Token") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("UserId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("IdentityUserId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("CustomerId"); + + b.HasIndex("IdentityUserId"); + + b.HasIndex("TenantId"); + + b.ToTable("Relationship"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.Property("ExecutorId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("AddDateTime") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("DefaultConfig") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ExecutorDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ExecutorName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ExecutorStatus") + .HasColumnType("INTEGER"); + + b.Property("MataData") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Path") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Tag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("TestStatus") + .HasColumnType("INTEGER"); + + b.Property("Tester") + .HasColumnType("TEXT"); + + b.Property("TesterDateTime") + .HasColumnType("TEXT"); + + b.Property("TypeName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("ExecutorId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("RuleTaskExecutors"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("CreateDateTime") + .HasColumnType("TEXT"); + + b.Property("Creator") + .HasColumnType("TEXT"); + + b.Property("CustomerId") + .HasColumnType("TEXT"); + + b.Property("EventDesc") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EventName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EventNameSpace") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EventParam") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EventStatus") + .HasColumnType("INTEGER"); + + b.Property("EventTag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TenantId") + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("EventId"); + + b.HasIndex("CustomerId"); + + b.HasIndex("TenantId"); + + b.ToTable("SubscriptionEvents"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.Property("BindId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("EventId") + .HasColumnType("TEXT"); + + b.Property("RuleTaskExecutorExecutorId") + .HasColumnType("TEXT"); + + b.Property("Status") + .HasColumnType("INTEGER"); + + b.Property("SubscriptionEventId") + .HasColumnType("TEXT"); + + b.Property("TaskConfig") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("BindId"); + + b.HasIndex("RuleTaskExecutorExecutorId"); + + b.HasIndex("SubscriptionEventId"); + + b.ToTable("SubscriptionTasks"); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryData", b => + { + b.Property("DeviceId") + .HasColumnType("TEXT") + .HasColumnOrder(1); + + b.Property("KeyName") + .HasColumnType("TEXT") + .HasColumnOrder(2) + .UseCollation("NOCASE"); + + b.Property("DateTime") + .HasColumnType("TEXT") + .HasColumnOrder(3); + + b.Property("DataSide") + .HasColumnType("INTEGER") + .HasColumnOrder(4); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnOrder(5); + + b.Property("Value_Binary") + .HasColumnType("BLOB"); + + b.Property("Value_Boolean") + .HasColumnType("INTEGER"); + + b.Property("Value_DateTime") + .HasColumnType("TEXT"); + + b.Property("Value_Double") + .HasColumnType("REAL"); + + b.Property("Value_Json") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Value_Long") + .HasColumnType("INTEGER"); + + b.Property("Value_String") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Value_XML") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("DeviceId", "KeyName", "DateTime"); + + b.HasIndex("DeviceId"); + + b.HasIndex("KeyName"); + + b.HasIndex("DeviceId", "KeyName"); + + b.ToTable("TelemetryData"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Address") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("City") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Country") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Deleted") + .HasColumnType("INTEGER"); + + b.Property("Email") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Phone") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Province") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Street") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ZipCode") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.ToTable("Tenant"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + 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("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ClaimValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("AccessFailedCount") + .HasColumnType("INTEGER"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("EmailConfirmed") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnabled") + .HasColumnType("INTEGER"); + + b.Property("LockoutEnd") + .HasColumnType("TEXT"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PasswordHash") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PhoneNumber") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("INTEGER"); + + b.Property("SecurityStamp") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("TwoFactorEnabled") + .HasColumnType("INTEGER"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + 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("INTEGER"); + + b.Property("ClaimType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ClaimValue") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ProviderKey") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("ProviderDisplayName") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("RoleId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("LoginProvider") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Name") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("Value") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("IoTSharp.Data.AttributeLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(2); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.HasBaseType("IoTSharp.Data.Device"); + + b.HasDiscriminator().HasValue(1); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.Property("OwnerId") + .HasColumnType("TEXT"); + + b.HasIndex("OwnerId"); + + b.HasDiscriminator().HasValue(5); + }); + + modelBuilder.Entity("IoTSharp.Data.TelemetryLatest", b => + { + b.HasBaseType("IoTSharp.Data.DataStorage"); + + b.HasDiscriminator().HasValue(4); + }); + + modelBuilder.Entity("IoTSharp.Data.Alarm", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AssetRelation", b => + { + b.HasOne("IoTSharp.Data.Asset", null) + .WithMany("OwnedAssets") + .HasForeignKey("AssetId"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuditLog", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.BaseEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Customers") + .HasForeignKey("TenantId"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.HasOne("IoTSharp.Data.AuthorizedKey", null) + .WithMany("Devices") + .HasForeignKey("AuthorizedKeyId"); + + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany("Devices") + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Gateway", "Owner") + .WithMany("Children") + .HasForeignKey("OwnerId"); + + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Devices") + .HasForeignKey("ProduceId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany("Devices") + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Owner"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceDiagram", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraph", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.DeviceDiagram", "DeviceDiagram") + .WithMany() + .HasForeignKey("DeviceDiagramDiagramId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("DeviceDiagram"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceGraphToolBox", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceIdentity", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithOne("DeviceIdentity") + .HasForeignKey("IoTSharp.Data.DeviceIdentity", "DeviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Device"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModelCommand", b => + { + b.HasOne("IoTSharp.Data.DeviceModel", "DeviceModel") + .WithMany("DeviceModelCommands") + .HasForeignKey("DeviceModelId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceModel"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceRule", b => + { + b.HasOne("IoTSharp.Data.Device", "Device") + .WithMany() + .HasForeignKey("DeviceId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("Device"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormFieldValueInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.DynamicFormInfo", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Flow", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "Executor") + .WithMany() + .HasForeignKey("ExecutorId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Executor"); + + b.Navigation("FlowRule"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowOperation", b => + { + b.HasOne("IoTSharp.Data.BaseEvent", "BaseEvent") + .WithMany() + .HasForeignKey("BaseEventEventId"); + + b.HasOne("IoTSharp.Data.Flow", "Flow") + .WithMany() + .HasForeignKey("FlowId"); + + b.HasOne("IoTSharp.Data.FlowRule", "FlowRule") + .WithMany() + .HasForeignKey("FlowRuleRuleId"); + + b.Navigation("BaseEvent"); + + b.Navigation("Flow"); + + b.Navigation("FlowRule"); + }); + + modelBuilder.Entity("IoTSharp.Data.FlowRule", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceDictionary", b => + { + b.HasOne("IoTSharp.Data.Produce", null) + .WithMany("Dictionaries") + .HasForeignKey("ProduceId"); + }); + + modelBuilder.Entity("IoTSharp.Data.RefreshToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "User") + .WithMany() + .HasForeignKey("UserId"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("IoTSharp.Data.Relationship", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", "IdentityUser") + .WithMany() + .HasForeignKey("IdentityUserId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("IdentityUser"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.RuleTaskExecutor", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionEvent", b => + { + b.HasOne("IoTSharp.Data.Customer", "Customer") + .WithMany() + .HasForeignKey("CustomerId"); + + b.HasOne("IoTSharp.Data.Tenant", "Tenant") + .WithMany() + .HasForeignKey("TenantId"); + + b.Navigation("Customer"); + + b.Navigation("Tenant"); + }); + + modelBuilder.Entity("IoTSharp.Data.SubscriptionTask", b => + { + b.HasOne("IoTSharp.Data.RuleTaskExecutor", "RuleTaskExecutor") + .WithMany() + .HasForeignKey("RuleTaskExecutorExecutorId"); + + b.HasOne("IoTSharp.Data.SubscriptionEvent", "Subscription") + .WithMany() + .HasForeignKey("SubscriptionEventId"); + + b.Navigation("RuleTaskExecutor"); + + b.Navigation("Subscription"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("IoTSharp.Data.ProduceData", b => + { + b.HasOne("IoTSharp.Data.Produce", "Owner") + .WithMany("DefaultAttributes") + .HasForeignKey("OwnerId"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("IoTSharp.Data.Asset", b => + { + b.Navigation("OwnedAssets"); + }); + + modelBuilder.Entity("IoTSharp.Data.AuthorizedKey", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Customer", b => + { + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Device", b => + { + b.Navigation("DeviceIdentity"); + }); + + modelBuilder.Entity("IoTSharp.Data.DeviceModel", b => + { + b.Navigation("DeviceModelCommands"); + }); + + modelBuilder.Entity("IoTSharp.Data.Produce", b => + { + b.Navigation("DefaultAttributes"); + + b.Navigation("Devices"); + + b.Navigation("Dictionaries"); + }); + + modelBuilder.Entity("IoTSharp.Data.Tenant", b => + { + b.Navigation("Customers"); + + b.Navigation("Devices"); + }); + + modelBuilder.Entity("IoTSharp.Data.Gateway", b => + { + b.Navigation("Children"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.cs b/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.cs new file mode 100644 index 00000000..510d375b --- /dev/null +++ b/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/20221202074402_ModifyEmailSpell.cs @@ -0,0 +1,102 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace IoTSharp.Data.Sqlite.Migrations +{ + public partial class ModifyEmailSpell : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "EMail", + table: "Tenant", + newName: "Email"); + + migrationBuilder.AddColumn( + name: "FlowClass", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + + migrationBuilder.AddColumn( + name: "FlowIcon", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + + migrationBuilder.AddColumn( + name: "FlowNameSpace", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + + migrationBuilder.AddColumn( + name: "FlowShapeType", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + + migrationBuilder.AddColumn( + name: "FlowTag", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + + migrationBuilder.AddColumn( + name: "Left", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + + migrationBuilder.AddColumn( + name: "Top", + table: "Flows", + type: "TEXT", + nullable: true, + collation: "NOCASE"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "FlowClass", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowIcon", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowNameSpace", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowShapeType", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "FlowTag", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "Left", + table: "Flows"); + + migrationBuilder.DropColumn( + name: "Top", + table: "Flows"); + + migrationBuilder.RenameColumn( + name: "Email", + table: "Tenant", + newName: "EMail"); + } + } +} diff --git a/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/ApplicationDbContextModelSnapshot.cs b/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/ApplicationDbContextModelSnapshot.cs index 4a005a65..1b2e5863 100644 --- a/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/IoTSharp.Data.Storage/IoTSharp.Data.Sqlite/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1376,12 +1376,32 @@ namespace IoTSharp.Data.Sqlite.Migrations b.Property("ExecutorId") .HasColumnType("TEXT"); + b.Property("FlowClass") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowIcon") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + + b.Property("FlowNameSpace") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + b.Property("FlowRuleRuleId") .HasColumnType("TEXT"); + b.Property("FlowShapeType") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + b.Property("FlowStatus") .HasColumnType("INTEGER"); + b.Property("FlowTag") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + b.Property("FlowType") .HasColumnType("TEXT") .UseCollation("NOCASE"); @@ -1398,6 +1418,10 @@ namespace IoTSharp.Data.Sqlite.Migrations .HasColumnType("TEXT") .UseCollation("NOCASE"); + b.Property("Left") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + b.Property("NodeProcessClass") .HasColumnType("TEXT") .UseCollation("NOCASE"); @@ -1450,6 +1474,10 @@ namespace IoTSharp.Data.Sqlite.Migrations b.Property("TesterDateTime") .HasColumnType("TEXT"); + b.Property("Top") + .HasColumnType("TEXT") + .UseCollation("NOCASE"); + b.Property("bpmnid") .HasColumnType("TEXT") .UseCollation("NOCASE"); @@ -2052,7 +2080,7 @@ namespace IoTSharp.Data.Sqlite.Migrations b.Property("Deleted") .HasColumnType("INTEGER"); - b.Property("EMail") + b.Property("Email") .HasColumnType("TEXT") .UseCollation("NOCASE"); diff --git a/IoTSharp/ClientAppVue b/IoTSharp/ClientAppVue index 125abf54..fd17300d 160000 --- a/IoTSharp/ClientAppVue +++ b/IoTSharp/ClientAppVue @@ -1 +1 @@ -Subproject commit 125abf54d592240cd16697f515d8cbae199d47f5 +Subproject commit fd17300d6f7fbba2698c85eddde0f03d0153b34e diff --git a/IoTSharp/Controllers/AccountController.cs b/IoTSharp/Controllers/AccountController.cs index 80970431..20b866b3 100644 --- a/IoTSharp/Controllers/AccountController.cs +++ b/IoTSharp/Controllers/AccountController.cs @@ -356,11 +356,11 @@ namespace IoTSharp.Controllers public async Task> Create([FromBody] InstallDto model) { - var tenant = _context.Tenant.FirstOrDefault(t => t.EMail == model.TenantEMail && t.Deleted==false); + var tenant = _context.Tenant.FirstOrDefault(t => t.Email == model.TenantEMail && t.Deleted==false); var customer = _context.Customer.FirstOrDefault(t => t.Email == model.CustomerEMail && t.Deleted == false); if (tenant == null && customer == null) { - tenant = new Tenant() { Id = Guid.NewGuid(), Name = model.TenantName, EMail = model.TenantEMail }; + tenant = new Tenant() { Id = Guid.NewGuid(), Name = model.TenantName, Email = model.TenantEMail }; customer = new Customer() { Id = Guid.NewGuid(), Name = model.CustomerName, Email = model.CustomerEMail }; customer.Tenant = tenant; tenant.Customers = new List(); @@ -664,7 +664,7 @@ namespace IoTSharp.Controllers switch (type) { case 1: - return new ApiResult(ApiCode.Success, "OK", _context.Tenant.Any(c => c.EMail.ToLower() == email.ToLower() && c.Deleted==false)); + return new ApiResult(ApiCode.Success, "OK", _context.Tenant.Any(c => c.Email.ToLower() == email.ToLower() && c.Deleted==false)); case 2: return new ApiResult(ApiCode.Success, "OK", _context.Customer.Any(c => c.Email.ToLower() == email.ToLower() && c.Deleted==false)); case 3: diff --git a/IoTSharp/Controllers/CustomersController.cs b/IoTSharp/Controllers/CustomersController.cs index 677d261a..b6337f48 100644 --- a/IoTSharp/Controllers/CustomersController.cs +++ b/IoTSharp/Controllers/CustomersController.cs @@ -51,7 +51,7 @@ namespace IoTSharp.Controllers /// 获取指定租户下的所有客户 /// /// - [HttpPost("Tenant/{tenantId}")] + [HttpPost("Tenant")] [Authorize(Roles = nameof(UserRole.NormalUser))] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ApiResult), StatusCodes.Status404NotFound)] @@ -59,12 +59,9 @@ namespace IoTSharp.Controllers public async Task>> GetCustomers([FromBody] CustomerParam m) { var profile = this.GetUserProfile(); - Expression> condition = x => x.Tenant.Id == profile.Tenant && x.Deleted==false; - return new ApiResult>(ApiCode.Success, "OK", new PagedData - { - total = await _context.Customer.CountAsync(condition), - rows = await _context.Customer.OrderByDescending(c => c.Id).Where(condition).Skip((m.Offset) * m.Limit).Take(m.Limit).ToListAsync() - }); + var querym = _context.Customer.Where(c => c.Deleted == false); + var data = await m.Query(querym, c => c.Name); + return new ApiResult>(ApiCode.Success, "OK", data); } /// diff --git a/IoTSharp/Controllers/InstallerController.cs b/IoTSharp/Controllers/InstallerController.cs index e2093fac..3518b214 100644 --- a/IoTSharp/Controllers/InstallerController.cs +++ b/IoTSharp/Controllers/InstallerController.cs @@ -119,7 +119,7 @@ namespace IoTSharp.Controllers if (!fx.Directory.Exists) fx.Directory.Create(); var ca = _uri.CreateCA(option.CACertificateFile, option.CAPrivateKeyFile); ca.CreateBrokerTlsCert(_uri.Host, Dns.GetHostAddresses(_uri.Host).FirstOrDefault(), - option.CertificateFile, option.PrivateKeyFile, ten.EMail); + option.CertificateFile, option.PrivateKeyFile, ten.Email); ca.LoadCAToRoot(); result = new ApiResult(ApiCode.Success, ca.Thumbprint); } diff --git a/IoTSharp/Extensions/ApplicationDBInitializer.cs b/IoTSharp/Extensions/ApplicationDBInitializer.cs index f32237d6..e2b55970 100644 --- a/IoTSharp/Extensions/ApplicationDBInitializer.cs +++ b/IoTSharp/Extensions/ApplicationDBInitializer.cs @@ -491,11 +491,11 @@ namespace IoTSharp.Data public async Task SeedUserAsync(InstallDto model) { - var tenant = _context.Tenant.FirstOrDefault(t => t.EMail == model.TenantEMail && t.Deleted==false); + var tenant = _context.Tenant.FirstOrDefault(t => t.Email == model.TenantEMail && t.Deleted==false); var customer = _context.Customer.FirstOrDefault(t => t.Email == model.CustomerEMail && t.Deleted==false); if (tenant == null && customer == null) { - tenant = new Tenant() { Id = Guid.NewGuid(), Name = model.TenantName, EMail = model.TenantEMail }; + tenant = new Tenant() { Id = Guid.NewGuid(), Name = model.TenantName, Email = model.TenantEMail }; customer = new Customer() { Id = Guid.NewGuid(), Name = model.CustomerName, Email = model.CustomerEMail }; customer.Tenant = tenant; tenant.Customers = new List(); -- GitLab