first commit -push

This commit is contained in:
dungtt
2025-10-15 15:15:53 +07:00
parent 674ae395be
commit a9577c5756
885 changed files with 74595 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RobotNet.MapManager.Data;
#nullable disable
[Table("Actions")]
[Index(nameof(MapId), nameof(Name), Name = "IX_Action_MapId_Name")]
public class Action
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("MapId", TypeName = "uniqueidentifier")]
[Required]
public Guid MapId { get; set; }
[Column("Name", TypeName = "nvarchar(64)")]
public string Name { get; set; }
[Column("Content", TypeName = "nvarchar(max)")]
public string Content { get; set; }
public Map Map { get; set; }
}

View File

@@ -0,0 +1,77 @@
using Microsoft.EntityFrameworkCore;
using RobotNet.MapShares.Enums;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RobotNet.MapManager.Data;
#nullable disable
[Table("Edges")]
[Index(nameof(MapId), Name = "IX_Edge_MapId")]
public class Edge
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("MapId", TypeName = "uniqueidentifier")]
[Required]
public Guid MapId { get; set; }
[Column("StartNodeId", TypeName = "uniqueidentifier")]
[Required]
public Guid StartNodeId { get; set; }
[Column("EndNodeId", TypeName = "uniqueidentifier")]
[Required]
public Guid EndNodeId { get; set; }
[Column("ControlPoint1X", TypeName = "float")]
public double ControlPoint1X { get; set; }
[Column("ControlPoint1Y", TypeName = "float")]
public double ControlPoint1Y { get; set; }
[Column("ControlPoint2X", TypeName = "float")]
public double ControlPoint2X { get; set; }
[Column("ControlPoint2Y", TypeName = "float")]
public double ControlPoint2Y { get; set; }
[Column("TrajectoryDegree", TypeName = "tinyint")]
public TrajectoryDegree TrajectoryDegree { get; set; }
[Column("MaxHeight", TypeName = "float")]
public double MaxHeight { get; set; }
[Column("MinHeight", TypeName = "float")]
public double MinHeight { get; set; }
[Column("DirectionAllowed", TypeName = "tinyint")]
public DirectionAllowed DirectionAllowed { get; set; }
[Column("RotationAllowed", TypeName = "bit")]
public bool RotationAllowed { get; set; }
[Column("MaxRotationSpeed", TypeName = "float")]
public double MaxRotationSpeed { get; set; }
[Column("MaxSpeed", TypeName = "float")]
public double MaxSpeed { get; set; }
[Column("AllowedDeviationXy", TypeName = "float")]
public double AllowedDeviationXy { get; set; }
[Column("AllowedDeviationTheta", TypeName = "float")]
public double AllowedDeviationTheta { get; set; }
[Column("Actions", TypeName = "nvarchar(max)")]
public string Actions { get; set; }
public Map Map { get; set; }
public virtual Node StartNode { get; set; }
public virtual Node EndNode { get; set; }
}

View File

@@ -0,0 +1,49 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RobotNet.MapManager.Data;
#nullable disable
[Table("Elements")]
[Index(nameof(MapId), nameof(ModelId), Name = "IX_Element_MapId_ModelId")]
public class Element
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("MapId", TypeName = "uniqueidentifier")]
[Required]
public Guid MapId { get; set; }
[Column("ModelId", TypeName = "uniqueidentifier")]
[Required]
public Guid ModelId { get; set; }
[Column("NodeId", TypeName = "uniqueidentifier")]
[Required]
public Guid NodeId { get; set; }
[Column("Name", TypeName = "nvarchar(64)")]
public string Name { get; set; }
[Column("IsOpen", TypeName = "bit")]
public bool IsOpen { get; set; }
[Column("OffsetX", TypeName = "float")]
public double OffsetX { get; set; }
[Column("OffsetY", TypeName = "float")]
public double OffsetY { get; set; }
[Column("Content", TypeName = "nvarchar(max)")]
public string Content { get; set; }
public Map Map { get; set; }
public ElementModel Model { get; set; }
public Node Node { get; set; }
}

View File

@@ -0,0 +1,55 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RobotNet.MapManager.Data;
#nullable disable
[Table("ElementModels")]
[Index(nameof(MapId), nameof(Name), Name = "IX_ElementModel_MapId_Name")]
public class ElementModel
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("MapId", TypeName = "uniqueidentifier")]
[Required]
public Guid MapId { get; set; }
[Column("Name", TypeName = "nvarchar(64)")]
public string Name { get; set; }
[Column("Width", TypeName = "float")]
[Required]
public double Width { get; set; }
[Column("Height", TypeName = "float")]
[Required]
public double Height { get; set; }
[Column("Image1Width", TypeName = "int")]
[Required]
public int Image1Width { get; set; }
[Column("Image1Height", TypeName = "int")]
[Required]
public int Image1Height { get; set; }
[Column("Image2Width", TypeName = "int")]
[Required]
public int Image2Width { get; set; }
[Column("Image2Height", TypeName = "int")]
[Required]
public int Image2Height { get; set; }
[Column("Content", TypeName = "nvarchar(max)")]
public string Content { get; set; }
public virtual ICollection<Element> Elements { get; } = [];
public Map Map { get; set; }
}

View File

@@ -0,0 +1,125 @@
using RobotNet.MapShares.Enums;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RobotNet.MapManager.Data;
#nullable disable
[Table("Maps")]
public class Map
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("Name", TypeName = "nvarchar(64)")]
[Required]
public string Name { get; set; }
[Column("Description", TypeName = "ntext")]
public string Description { get; set; } = "";
[Column("VersionId", TypeName = "uniqueidentifier")]
[Required]
public Guid VersionId { get; set; }
[Column("OriginX", TypeName = "float")]
[Required]
public double OriginX { get; set; }
[Column("OriginY", TypeName = "float")]
[Required]
public double OriginY { get; set; }
[Column("Resolution", TypeName = "float")]
[Required]
public double Resolution { get; set; }
[Column("ViewX", TypeName = "float")]
[Required]
public double ViewX { get; set; }
[Column("ViewY", TypeName = "float")]
[Required]
public double ViewY { get; set; }
[Column("ViewWidth", TypeName = "float")]
[Required]
public double ViewWidth { get; set; }
[Column("ViewHeight", TypeName = "float")]
[Required]
public double ViewHeight { get; set; }
[Column("ImageWidth", TypeName = "float")]
[Required]
public double ImageWidth { get; set; }
[Column("ImageHeight", TypeName = "float")]
[Required]
public double ImageHeight { get; set; }
[Column("NodeCount", TypeName = "BigInt")]
public Int64 NodeCount { get; set; }
[Column("Active", TypeName = "bit")]
public bool Active { get; set; }
[Column("VDA5050", TypeName = "nvarchar(max)")]
public string VDA5050 { get; set; } = ""; //AdditionalAttributes
[Column("NodeNameAutoGenerate", TypeName = "bit")]
public bool NodeNameAutoGenerate { get; set; }
[Column("NodeNameTemplateDefault", TypeName = "nvarchar(64)")]
public string NodeNameTemplateDefault { get; set; }
[Column("NodeAllowedDeviationXyDefault", TypeName = "float")]
public double NodeAllowedDeviationXyDefault { get; set; }
[Column("NodeAllowedDeviationThetaDefault", TypeName = "float")]
public double NodeAllowedDeviationThetaDefault { get; set; }
[Column("EdgeMinLengthDefault", TypeName = "float")]
public double EdgeMinLengthDefault { get; set; }
[Column("EdgeStraightMaxSpeedDefault", TypeName = "float")]
public double EdgeStraightMaxSpeedDefault { get; set; }
[Column("EdgeCurveMaxSpeedDefault", TypeName = "float")]
public double EdgeCurveMaxSpeedDefault { get; set; }
[Column("EdgeMaxHeightDefault", TypeName = "float")]
public double EdgeMaxHeightDefault { get; set; }
[Column("EdgeMinHeightDefault", TypeName = "float")]
public double EdgeMinHeightDefault { get; set; }
[Column("EdgeMaxRoataionSpeedDefault", TypeName = "float")]
public double EdgeMaxRotationSpeedDefault { get; set; }
[Column("EdgeDirectionAllowedDefault", TypeName = "tinyint")]
public DirectionAllowed EdgeDirectionAllowedDefault { get; set; }
[Column("EdgeRotationAllowedDefault", TypeName = "bit")]
public bool EdgeRotationAllowedDefault { get; set; }
[Column("EdgeAllowedDeviationXyDefault", TypeName = "float")]
public double EdgeAllowedDeviationXyDefault { get; set; }
[Column("EdgeAllowedDeviationThetaDefault", TypeName = "float")]
public double EdgeAllowedDeviationThetaDefault { get; set; }
[Column("ZoneMinSquareDefault", TypeName = "float")]
public double ZoneMinSquareDefault { get; set; }
public virtual ICollection<Node> Nodes { get; } = [];
public virtual ICollection<Edge> Edges { get; } = [];
public virtual ICollection<Action> Actions { get; } = [];
public virtual ICollection<Zone> Zones { get; } = [];
public virtual ICollection<ElementModel> ElementModels { get; } = [];
public virtual ICollection<Element> Elements { get; } = [];
}

View File

@@ -0,0 +1,90 @@
using Microsoft.EntityFrameworkCore;
namespace RobotNet.MapManager.Data;
public class MapEditorDbContext(DbContextOptions<MapEditorDbContext> options) : DbContext(options)
{
public DbSet<Map> Maps { get; private set; }
public DbSet<Node> Nodes { get; private set; }
public DbSet<Edge> Edges { get; private set; }
public DbSet<Zone> Zones { get; private set; }
public DbSet<Action> Actions { get; private set; }
public DbSet<ElementModel> ElementModels { get; private set; }
public DbSet<Element> Elements { get; private set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Map>()
.HasMany(e => e.Actions)
.WithOne(e => e.Map)
.HasForeignKey(e => e.MapId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Map>()
.HasMany(e => e.Edges)
.WithOne(e => e.Map)
.HasForeignKey(e => e.MapId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Map>()
.HasMany(e => e.Nodes)
.WithOne(e => e.Map)
.HasForeignKey(e => e.MapId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Map>()
.HasMany(e => e.Zones)
.WithOne(e => e.Map)
.HasForeignKey(e => e.MapId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Edge>()
.HasOne(e => e.StartNode)
.WithMany(n => n.StartEdges)
.HasForeignKey(e => e.StartNodeId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Edge>()
.HasOne(e => e.EndNode)
.WithMany(n => n.EndEdges)
.HasForeignKey(e => e.EndNodeId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Map>()
.HasMany(e => e.ElementModels)
.WithOne(e => e.Map)
.HasForeignKey(e => e.MapId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Map>()
.HasMany(e => e.Elements)
.WithOne(e => e.Map)
.HasForeignKey(e => e.MapId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<Node>()
.HasOne(n => n.Element)
.WithOne(e => e.Node)
.HasForeignKey<Element>(e => e.NodeId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
modelBuilder.Entity<ElementModel>()
.HasMany(e => e.Elements)
.WithOne(e => e.Model)
.HasForeignKey(e => e.ModelId)
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
base.OnModelCreating(modelBuilder);
}
}

View File

@@ -0,0 +1,17 @@
using Microsoft.EntityFrameworkCore;
namespace RobotNet.MapManager.Data;
public static class MapManagerDbExtensions
{
public static async Task SeedMapManagerDbAsync(this IServiceProvider serviceProvider)
{
using var scope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope();
using var appDb = scope.ServiceProvider.GetRequiredService<MapEditorDbContext>();
await appDb.Database.MigrateAsync();
//await appDb.Database.EnsureCreatedAsync();
await appDb.SaveChangesAsync();
}
}

View File

@@ -0,0 +1,603 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using RobotNet.MapManager.Data;
#nullable disable
namespace RobotNet.MapManager.Data.Migrations
{
[DbContext(typeof(MapEditorDbContext))]
[Migration("20250425030649_AddMapdb")]
partial class AddMapdb
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("RobotNet.MapManager.Data.Action", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_Action_MapId_Name");
b.ToTable("Actions");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Edge", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Actions")
.HasColumnType("nvarchar(max)")
.HasColumnName("Actions");
b.Property<double>("AllowedDeviationTheta")
.HasColumnType("float")
.HasColumnName("AllowedDeviationTheta");
b.Property<double>("AllowedDeviationXy")
.HasColumnType("float")
.HasColumnName("AllowedDeviationXy");
b.Property<double>("ControlPoint1X")
.HasColumnType("float")
.HasColumnName("ControlPoint1X");
b.Property<double>("ControlPoint1Y")
.HasColumnType("float")
.HasColumnName("ControlPoint1Y");
b.Property<double>("ControlPoint2X")
.HasColumnType("float")
.HasColumnName("ControlPoint2X");
b.Property<double>("ControlPoint2Y")
.HasColumnType("float")
.HasColumnName("ControlPoint2Y");
b.Property<byte>("DirectionAllowed")
.HasColumnType("tinyint")
.HasColumnName("DirectionAllowed");
b.Property<Guid>("EndNodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("EndNodeId");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<double>("MaxHeight")
.HasColumnType("float")
.HasColumnName("MaxHeight");
b.Property<double>("MaxRotationSpeed")
.HasColumnType("float")
.HasColumnName("MaxRotationSpeed");
b.Property<double>("MaxSpeed")
.HasColumnType("float")
.HasColumnName("MaxSpeed");
b.Property<double>("MinHeight")
.HasColumnType("float")
.HasColumnName("MinHeight");
b.Property<bool>("RotationAllowed")
.HasColumnType("bit")
.HasColumnName("RotationAllowed");
b.Property<Guid>("StartNodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("StartNodeId");
b.Property<byte>("TrajectoryDegree")
.HasColumnType("tinyint")
.HasColumnName("TrajectoryDegree");
b.HasKey("Id");
b.HasIndex("EndNodeId");
b.HasIndex("StartNodeId");
b.HasIndex(new[] { "MapId" }, "IX_Edge_MapId");
b.ToTable("Edges");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Element", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<bool>("IsOpen")
.HasColumnType("bit")
.HasColumnName("IsOpen");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<Guid>("ModelId")
.HasColumnType("uniqueidentifier")
.HasColumnName("ModelId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<Guid>("NodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("NodeId");
b.Property<double>("OffsetX")
.HasColumnType("float")
.HasColumnName("OffsetX");
b.Property<double>("OffsetY")
.HasColumnType("float")
.HasColumnName("OffsetY");
b.HasKey("Id");
b.HasIndex("ModelId");
b.HasIndex("NodeId")
.IsUnique();
b.HasIndex(new[] { "MapId", "ModelId" }, "IX_Element_MapId_ModelId");
b.ToTable("Elements");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<double>("Height")
.HasColumnType("float")
.HasColumnName("Height");
b.Property<int>("Image1Height")
.HasColumnType("int")
.HasColumnName("Image1Height");
b.Property<int>("Image1Width")
.HasColumnType("int")
.HasColumnName("Image1Width");
b.Property<int>("Image2Height")
.HasColumnType("int")
.HasColumnName("Image2Height");
b.Property<int>("Image2Width")
.HasColumnType("int")
.HasColumnName("Image2Width");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("Width")
.HasColumnType("float")
.HasColumnName("Width");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_ElementModel_MapId_Name");
b.ToTable("ElementModels");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Map", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<bool>("Active")
.HasColumnType("bit")
.HasColumnName("Active");
b.Property<string>("Description")
.HasColumnType("ntext")
.HasColumnName("Description");
b.Property<double>("EdgeAllowedDeviationThetaDefault")
.HasColumnType("float")
.HasColumnName("EdgeAllowedDeviationThetaDefault");
b.Property<double>("EdgeAllowedDeviationXyDefault")
.HasColumnType("float")
.HasColumnName("EdgeAllowedDeviationXyDefault");
b.Property<double>("EdgeCurveMaxSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeCurveMaxSpeedDefault");
b.Property<byte>("EdgeDirectionAllowedDefault")
.HasColumnType("tinyint")
.HasColumnName("EdgeDirectionAllowedDefault");
b.Property<double>("EdgeMaxHeightDefault")
.HasColumnType("float")
.HasColumnName("EdgeMaxHeightDefault");
b.Property<double>("EdgeMaxRotationSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeMaxRoataionSpeedDefault");
b.Property<double>("EdgeMinHeightDefault")
.HasColumnType("float")
.HasColumnName("EdgeMinHeightDefault");
b.Property<double>("EdgeMinLengthDefault")
.HasColumnType("float")
.HasColumnName("EdgeMinLengthDefault");
b.Property<bool>("EdgeRotationAllowedDefault")
.HasColumnType("bit")
.HasColumnName("EdgeRotationAllowedDefault");
b.Property<double>("EdgeStraightMaxSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeStraightMaxSpeedDefault");
b.Property<double>("ImageHeight")
.HasColumnType("float")
.HasColumnName("ImageHeight");
b.Property<double>("ImageWidth")
.HasColumnType("float")
.HasColumnName("ImageWidth");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("NodeAllowedDeviationThetaDefault")
.HasColumnType("float")
.HasColumnName("NodeAllowedDeviationThetaDefault");
b.Property<double>("NodeAllowedDeviationXyDefault")
.HasColumnType("float")
.HasColumnName("NodeAllowedDeviationXyDefault");
b.Property<long>("NodeCount")
.HasColumnType("BigInt")
.HasColumnName("NodeCount");
b.Property<bool>("NodeNameAutoGenerate")
.HasColumnType("bit")
.HasColumnName("NodeNameAutoGenerate");
b.Property<string>("NodeNameTemplateDefault")
.HasColumnType("nvarchar(64)")
.HasColumnName("NodeNameTemplateDefault");
b.Property<double>("OriginX")
.HasColumnType("float")
.HasColumnName("OriginX");
b.Property<double>("OriginY")
.HasColumnType("float")
.HasColumnName("OriginY");
b.Property<double>("Resolution")
.HasColumnType("float")
.HasColumnName("Resolution");
b.Property<string>("VDA5050")
.HasColumnType("nvarchar(max)")
.HasColumnName("VDA5050");
b.Property<Guid>("VersionId")
.HasColumnType("uniqueidentifier")
.HasColumnName("VersionId");
b.Property<double>("ViewHeight")
.HasColumnType("float")
.HasColumnName("ViewHeight");
b.Property<double>("ViewWidth")
.HasColumnType("float")
.HasColumnName("ViewWidth");
b.Property<double>("ViewX")
.HasColumnType("float")
.HasColumnName("ViewX");
b.Property<double>("ViewY")
.HasColumnType("float")
.HasColumnName("ViewY");
b.Property<double>("ZoneMinSquareDefault")
.HasColumnType("float")
.HasColumnName("ZoneMinSquareDefault");
b.HasKey("Id");
b.ToTable("Maps");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Actions")
.HasColumnType("nvarchar(max)")
.HasColumnName("Actions");
b.Property<double>("AllowedDeviationTheta")
.HasColumnType("float")
.HasColumnName("AllowedDeviationTheta");
b.Property<double>("AllowedDeviationXy")
.HasColumnType("float")
.HasColumnName("AllowedDeviationXy");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("Theta")
.HasColumnType("float")
.HasColumnName("Theta");
b.Property<double>("X")
.HasColumnType("float")
.HasColumnName("X");
b.Property<double>("Y")
.HasColumnType("float")
.HasColumnName("Y");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_Node_MapId_Name");
b.ToTable("Nodes");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Zone", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<int>("Type")
.HasColumnType("int")
.HasColumnName("Type");
b.Property<double>("X1")
.HasColumnType("float")
.HasColumnName("X1");
b.Property<double>("X2")
.HasColumnType("float")
.HasColumnName("X2");
b.Property<double>("X3")
.HasColumnType("float")
.HasColumnName("X3");
b.Property<double>("X4")
.HasColumnType("float")
.HasColumnName("X4");
b.Property<double>("Y1")
.HasColumnType("float")
.HasColumnName("Y1");
b.Property<double>("Y2")
.HasColumnType("float")
.HasColumnName("Y2");
b.Property<double>("Y3")
.HasColumnType("float")
.HasColumnName("Y3");
b.Property<double>("Y4")
.HasColumnType("float")
.HasColumnName("Y4");
b.HasKey("Id");
b.HasIndex(new[] { "MapId" }, "IX_Zone_MapId");
b.ToTable("Zones");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Action", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Actions")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Edge", b =>
{
b.HasOne("RobotNet.MapManager.Data.Node", "EndNode")
.WithMany("EndEdges")
.HasForeignKey("EndNodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Edges")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Node", "StartNode")
.WithMany("StartEdges")
.HasForeignKey("StartNodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("EndNode");
b.Navigation("Map");
b.Navigation("StartNode");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Element", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Elements")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.ElementModel", "Model")
.WithMany("Elements")
.HasForeignKey("ModelId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Node", "Node")
.WithOne("Element")
.HasForeignKey("RobotNet.MapManager.Data.Element", "NodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
b.Navigation("Model");
b.Navigation("Node");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("ElementModels")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Nodes")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Zone", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Zones")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.Navigation("Elements");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Map", b =>
{
b.Navigation("Actions");
b.Navigation("Edges");
b.Navigation("ElementModels");
b.Navigation("Elements");
b.Navigation("Nodes");
b.Navigation("Zones");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.Navigation("Element");
b.Navigation("EndEdges");
b.Navigation("StartEdges");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,313 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace RobotNet.MapManager.Data.Migrations
{
/// <inheritdoc />
public partial class AddMapdb : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Maps",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", nullable: false),
Description = table.Column<string>(type: "ntext", nullable: true),
VersionId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
OriginX = table.Column<double>(type: "float", nullable: false),
OriginY = table.Column<double>(type: "float", nullable: false),
Resolution = table.Column<double>(type: "float", nullable: false),
ViewX = table.Column<double>(type: "float", nullable: false),
ViewY = table.Column<double>(type: "float", nullable: false),
ViewWidth = table.Column<double>(type: "float", nullable: false),
ViewHeight = table.Column<double>(type: "float", nullable: false),
ImageWidth = table.Column<double>(type: "float", nullable: false),
ImageHeight = table.Column<double>(type: "float", nullable: false),
NodeCount = table.Column<long>(type: "BigInt", nullable: false),
Active = table.Column<bool>(type: "bit", nullable: false),
VDA5050 = table.Column<string>(type: "nvarchar(max)", nullable: true),
NodeNameAutoGenerate = table.Column<bool>(type: "bit", nullable: false),
NodeNameTemplateDefault = table.Column<string>(type: "nvarchar(64)", nullable: true),
NodeAllowedDeviationXyDefault = table.Column<double>(type: "float", nullable: false),
NodeAllowedDeviationThetaDefault = table.Column<double>(type: "float", nullable: false),
EdgeMinLengthDefault = table.Column<double>(type: "float", nullable: false),
EdgeStraightMaxSpeedDefault = table.Column<double>(type: "float", nullable: false),
EdgeCurveMaxSpeedDefault = table.Column<double>(type: "float", nullable: false),
EdgeMaxHeightDefault = table.Column<double>(type: "float", nullable: false),
EdgeMinHeightDefault = table.Column<double>(type: "float", nullable: false),
EdgeMaxRoataionSpeedDefault = table.Column<double>(type: "float", nullable: false),
EdgeDirectionAllowedDefault = table.Column<byte>(type: "tinyint", nullable: false),
EdgeRotationAllowedDefault = table.Column<bool>(type: "bit", nullable: false),
EdgeAllowedDeviationXyDefault = table.Column<double>(type: "float", nullable: false),
EdgeAllowedDeviationThetaDefault = table.Column<double>(type: "float", nullable: false),
ZoneMinSquareDefault = table.Column<double>(type: "float", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Maps", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Actions",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MapId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", nullable: true),
Content = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Actions", x => x.Id);
table.ForeignKey(
name: "FK_Actions_Maps_MapId",
column: x => x.MapId,
principalTable: "Maps",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "ElementModels",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MapId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", nullable: true),
Width = table.Column<double>(type: "float", nullable: false),
Height = table.Column<double>(type: "float", nullable: false),
Image1Width = table.Column<int>(type: "int", nullable: false),
Image1Height = table.Column<int>(type: "int", nullable: false),
Image2Width = table.Column<int>(type: "int", nullable: false),
Image2Height = table.Column<int>(type: "int", nullable: false),
Content = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_ElementModels", x => x.Id);
table.ForeignKey(
name: "FK_ElementModels_Maps_MapId",
column: x => x.MapId,
principalTable: "Maps",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Nodes",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MapId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", nullable: true),
X = table.Column<double>(type: "float", nullable: false),
Y = table.Column<double>(type: "float", nullable: false),
Theta = table.Column<double>(type: "float", nullable: false),
AllowedDeviationXy = table.Column<double>(type: "float", nullable: false),
AllowedDeviationTheta = table.Column<double>(type: "float", nullable: false),
Actions = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Nodes", x => x.Id);
table.ForeignKey(
name: "FK_Nodes_Maps_MapId",
column: x => x.MapId,
principalTable: "Maps",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Zones",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MapId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Type = table.Column<int>(type: "int", nullable: false),
X1 = table.Column<double>(type: "float", nullable: false),
Y1 = table.Column<double>(type: "float", nullable: false),
X2 = table.Column<double>(type: "float", nullable: false),
Y2 = table.Column<double>(type: "float", nullable: false),
X3 = table.Column<double>(type: "float", nullable: false),
Y3 = table.Column<double>(type: "float", nullable: false),
X4 = table.Column<double>(type: "float", nullable: false),
Y4 = table.Column<double>(type: "float", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Zones", x => x.Id);
table.ForeignKey(
name: "FK_Zones_Maps_MapId",
column: x => x.MapId,
principalTable: "Maps",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Edges",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MapId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
StartNodeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
EndNodeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ControlPoint1X = table.Column<double>(type: "float", nullable: false),
ControlPoint1Y = table.Column<double>(type: "float", nullable: false),
ControlPoint2X = table.Column<double>(type: "float", nullable: false),
ControlPoint2Y = table.Column<double>(type: "float", nullable: false),
TrajectoryDegree = table.Column<byte>(type: "tinyint", nullable: false),
MaxHeight = table.Column<double>(type: "float", nullable: false),
MinHeight = table.Column<double>(type: "float", nullable: false),
DirectionAllowed = table.Column<byte>(type: "tinyint", nullable: false),
RotationAllowed = table.Column<bool>(type: "bit", nullable: false),
MaxRotationSpeed = table.Column<double>(type: "float", nullable: false),
MaxSpeed = table.Column<double>(type: "float", nullable: false),
AllowedDeviationXy = table.Column<double>(type: "float", nullable: false),
AllowedDeviationTheta = table.Column<double>(type: "float", nullable: false),
Actions = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Edges", x => x.Id);
table.ForeignKey(
name: "FK_Edges_Maps_MapId",
column: x => x.MapId,
principalTable: "Maps",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Edges_Nodes_EndNodeId",
column: x => x.EndNodeId,
principalTable: "Nodes",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Edges_Nodes_StartNodeId",
column: x => x.StartNodeId,
principalTable: "Nodes",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Elements",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
MapId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
ModelId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
NodeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(64)", nullable: true),
IsOpen = table.Column<bool>(type: "bit", nullable: false),
OffsetX = table.Column<double>(type: "float", nullable: false),
OffsetY = table.Column<double>(type: "float", nullable: false),
Content = table.Column<string>(type: "nvarchar(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Elements", x => x.Id);
table.ForeignKey(
name: "FK_Elements_ElementModels_ModelId",
column: x => x.ModelId,
principalTable: "ElementModels",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Elements_Maps_MapId",
column: x => x.MapId,
principalTable: "Maps",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_Elements_Nodes_NodeId",
column: x => x.NodeId,
principalTable: "Nodes",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex(
name: "IX_Action_MapId_Name",
table: "Actions",
columns: new[] { "MapId", "Name" });
migrationBuilder.CreateIndex(
name: "IX_Edge_MapId",
table: "Edges",
column: "MapId");
migrationBuilder.CreateIndex(
name: "IX_Edges_EndNodeId",
table: "Edges",
column: "EndNodeId");
migrationBuilder.CreateIndex(
name: "IX_Edges_StartNodeId",
table: "Edges",
column: "StartNodeId");
migrationBuilder.CreateIndex(
name: "IX_ElementModel_MapId_Name",
table: "ElementModels",
columns: new[] { "MapId", "Name" });
migrationBuilder.CreateIndex(
name: "IX_Element_MapId_ModelId",
table: "Elements",
columns: new[] { "MapId", "ModelId" });
migrationBuilder.CreateIndex(
name: "IX_Elements_ModelId",
table: "Elements",
column: "ModelId");
migrationBuilder.CreateIndex(
name: "IX_Elements_NodeId",
table: "Elements",
column: "NodeId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_Node_MapId_Name",
table: "Nodes",
columns: new[] { "MapId", "Name" });
migrationBuilder.CreateIndex(
name: "IX_Zone_MapId",
table: "Zones",
column: "MapId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Actions");
migrationBuilder.DropTable(
name: "Edges");
migrationBuilder.DropTable(
name: "Elements");
migrationBuilder.DropTable(
name: "Zones");
migrationBuilder.DropTable(
name: "ElementModels");
migrationBuilder.DropTable(
name: "Nodes");
migrationBuilder.DropTable(
name: "Maps");
}
}
}

View File

@@ -0,0 +1,608 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using RobotNet.MapManager.Data;
#nullable disable
namespace RobotNet.MapManager.Data.Migrations
{
[DbContext(typeof(MapEditorDbContext))]
[Migration("20250812041834_AddZoneName")]
partial class AddZoneName
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.7")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("RobotNet.MapManager.Data.Action", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_Action_MapId_Name");
b.ToTable("Actions");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Edge", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Actions")
.HasColumnType("nvarchar(max)")
.HasColumnName("Actions");
b.Property<double>("AllowedDeviationTheta")
.HasColumnType("float")
.HasColumnName("AllowedDeviationTheta");
b.Property<double>("AllowedDeviationXy")
.HasColumnType("float")
.HasColumnName("AllowedDeviationXy");
b.Property<double>("ControlPoint1X")
.HasColumnType("float")
.HasColumnName("ControlPoint1X");
b.Property<double>("ControlPoint1Y")
.HasColumnType("float")
.HasColumnName("ControlPoint1Y");
b.Property<double>("ControlPoint2X")
.HasColumnType("float")
.HasColumnName("ControlPoint2X");
b.Property<double>("ControlPoint2Y")
.HasColumnType("float")
.HasColumnName("ControlPoint2Y");
b.Property<byte>("DirectionAllowed")
.HasColumnType("tinyint")
.HasColumnName("DirectionAllowed");
b.Property<Guid>("EndNodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("EndNodeId");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<double>("MaxHeight")
.HasColumnType("float")
.HasColumnName("MaxHeight");
b.Property<double>("MaxRotationSpeed")
.HasColumnType("float")
.HasColumnName("MaxRotationSpeed");
b.Property<double>("MaxSpeed")
.HasColumnType("float")
.HasColumnName("MaxSpeed");
b.Property<double>("MinHeight")
.HasColumnType("float")
.HasColumnName("MinHeight");
b.Property<bool>("RotationAllowed")
.HasColumnType("bit")
.HasColumnName("RotationAllowed");
b.Property<Guid>("StartNodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("StartNodeId");
b.Property<byte>("TrajectoryDegree")
.HasColumnType("tinyint")
.HasColumnName("TrajectoryDegree");
b.HasKey("Id");
b.HasIndex("EndNodeId");
b.HasIndex("StartNodeId");
b.HasIndex(new[] { "MapId" }, "IX_Edge_MapId");
b.ToTable("Edges");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Element", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<bool>("IsOpen")
.HasColumnType("bit")
.HasColumnName("IsOpen");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<Guid>("ModelId")
.HasColumnType("uniqueidentifier")
.HasColumnName("ModelId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<Guid>("NodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("NodeId");
b.Property<double>("OffsetX")
.HasColumnType("float")
.HasColumnName("OffsetX");
b.Property<double>("OffsetY")
.HasColumnType("float")
.HasColumnName("OffsetY");
b.HasKey("Id");
b.HasIndex("ModelId");
b.HasIndex("NodeId")
.IsUnique();
b.HasIndex(new[] { "MapId", "ModelId" }, "IX_Element_MapId_ModelId");
b.ToTable("Elements");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<double>("Height")
.HasColumnType("float")
.HasColumnName("Height");
b.Property<int>("Image1Height")
.HasColumnType("int")
.HasColumnName("Image1Height");
b.Property<int>("Image1Width")
.HasColumnType("int")
.HasColumnName("Image1Width");
b.Property<int>("Image2Height")
.HasColumnType("int")
.HasColumnName("Image2Height");
b.Property<int>("Image2Width")
.HasColumnType("int")
.HasColumnName("Image2Width");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("Width")
.HasColumnType("float")
.HasColumnName("Width");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_ElementModel_MapId_Name");
b.ToTable("ElementModels");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Map", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<bool>("Active")
.HasColumnType("bit")
.HasColumnName("Active");
b.Property<string>("Description")
.HasColumnType("ntext")
.HasColumnName("Description");
b.Property<double>("EdgeAllowedDeviationThetaDefault")
.HasColumnType("float")
.HasColumnName("EdgeAllowedDeviationThetaDefault");
b.Property<double>("EdgeAllowedDeviationXyDefault")
.HasColumnType("float")
.HasColumnName("EdgeAllowedDeviationXyDefault");
b.Property<double>("EdgeCurveMaxSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeCurveMaxSpeedDefault");
b.Property<byte>("EdgeDirectionAllowedDefault")
.HasColumnType("tinyint")
.HasColumnName("EdgeDirectionAllowedDefault");
b.Property<double>("EdgeMaxHeightDefault")
.HasColumnType("float")
.HasColumnName("EdgeMaxHeightDefault");
b.Property<double>("EdgeMaxRotationSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeMaxRoataionSpeedDefault");
b.Property<double>("EdgeMinHeightDefault")
.HasColumnType("float")
.HasColumnName("EdgeMinHeightDefault");
b.Property<double>("EdgeMinLengthDefault")
.HasColumnType("float")
.HasColumnName("EdgeMinLengthDefault");
b.Property<bool>("EdgeRotationAllowedDefault")
.HasColumnType("bit")
.HasColumnName("EdgeRotationAllowedDefault");
b.Property<double>("EdgeStraightMaxSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeStraightMaxSpeedDefault");
b.Property<double>("ImageHeight")
.HasColumnType("float")
.HasColumnName("ImageHeight");
b.Property<double>("ImageWidth")
.HasColumnType("float")
.HasColumnName("ImageWidth");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("NodeAllowedDeviationThetaDefault")
.HasColumnType("float")
.HasColumnName("NodeAllowedDeviationThetaDefault");
b.Property<double>("NodeAllowedDeviationXyDefault")
.HasColumnType("float")
.HasColumnName("NodeAllowedDeviationXyDefault");
b.Property<long>("NodeCount")
.HasColumnType("BigInt")
.HasColumnName("NodeCount");
b.Property<bool>("NodeNameAutoGenerate")
.HasColumnType("bit")
.HasColumnName("NodeNameAutoGenerate");
b.Property<string>("NodeNameTemplateDefault")
.HasColumnType("nvarchar(64)")
.HasColumnName("NodeNameTemplateDefault");
b.Property<double>("OriginX")
.HasColumnType("float")
.HasColumnName("OriginX");
b.Property<double>("OriginY")
.HasColumnType("float")
.HasColumnName("OriginY");
b.Property<double>("Resolution")
.HasColumnType("float")
.HasColumnName("Resolution");
b.Property<string>("VDA5050")
.HasColumnType("nvarchar(max)")
.HasColumnName("VDA5050");
b.Property<Guid>("VersionId")
.HasColumnType("uniqueidentifier")
.HasColumnName("VersionId");
b.Property<double>("ViewHeight")
.HasColumnType("float")
.HasColumnName("ViewHeight");
b.Property<double>("ViewWidth")
.HasColumnType("float")
.HasColumnName("ViewWidth");
b.Property<double>("ViewX")
.HasColumnType("float")
.HasColumnName("ViewX");
b.Property<double>("ViewY")
.HasColumnType("float")
.HasColumnName("ViewY");
b.Property<double>("ZoneMinSquareDefault")
.HasColumnType("float")
.HasColumnName("ZoneMinSquareDefault");
b.HasKey("Id");
b.ToTable("Maps");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Actions")
.HasColumnType("nvarchar(max)")
.HasColumnName("Actions");
b.Property<double>("AllowedDeviationTheta")
.HasColumnType("float")
.HasColumnName("AllowedDeviationTheta");
b.Property<double>("AllowedDeviationXy")
.HasColumnType("float")
.HasColumnName("AllowedDeviationXy");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("Theta")
.HasColumnType("float")
.HasColumnName("Theta");
b.Property<double>("X")
.HasColumnType("float")
.HasColumnName("X");
b.Property<double>("Y")
.HasColumnType("float")
.HasColumnName("Y");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_Node_MapId_Name");
b.ToTable("Nodes");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Zone", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<int>("Type")
.HasColumnType("int")
.HasColumnName("Type");
b.Property<double>("X1")
.HasColumnType("float")
.HasColumnName("X1");
b.Property<double>("X2")
.HasColumnType("float")
.HasColumnName("X2");
b.Property<double>("X3")
.HasColumnType("float")
.HasColumnName("X3");
b.Property<double>("X4")
.HasColumnType("float")
.HasColumnName("X4");
b.Property<double>("Y1")
.HasColumnType("float")
.HasColumnName("Y1");
b.Property<double>("Y2")
.HasColumnType("float")
.HasColumnName("Y2");
b.Property<double>("Y3")
.HasColumnType("float")
.HasColumnName("Y3");
b.Property<double>("Y4")
.HasColumnType("float")
.HasColumnName("Y4");
b.HasKey("Id");
b.HasIndex(new[] { "MapId" }, "IX_Zone_MapId");
b.ToTable("Zones");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Action", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Actions")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Edge", b =>
{
b.HasOne("RobotNet.MapManager.Data.Node", "EndNode")
.WithMany("EndEdges")
.HasForeignKey("EndNodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Edges")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Node", "StartNode")
.WithMany("StartEdges")
.HasForeignKey("StartNodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("EndNode");
b.Navigation("Map");
b.Navigation("StartNode");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Element", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Elements")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.ElementModel", "Model")
.WithMany("Elements")
.HasForeignKey("ModelId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Node", "Node")
.WithOne("Element")
.HasForeignKey("RobotNet.MapManager.Data.Element", "NodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
b.Navigation("Model");
b.Navigation("Node");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("ElementModels")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Nodes")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Zone", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Zones")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.Navigation("Elements");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Map", b =>
{
b.Navigation("Actions");
b.Navigation("Edges");
b.Navigation("ElementModels");
b.Navigation("Elements");
b.Navigation("Nodes");
b.Navigation("Zones");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.Navigation("Element");
b.Navigation("EndEdges");
b.Navigation("StartEdges");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace RobotNet.MapManager.Data.Migrations
{
/// <inheritdoc />
public partial class AddZoneName : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Name",
table: "Zones",
type: "nvarchar(64)",
nullable: false,
defaultValue: "");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Name",
table: "Zones");
}
}
}

View File

@@ -0,0 +1,605 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using RobotNet.MapManager.Data;
#nullable disable
namespace RobotNet.MapManager.Data.Migrations
{
[DbContext(typeof(MapEditorDbContext))]
partial class MapEditorDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "9.0.7")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("RobotNet.MapManager.Data.Action", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_Action_MapId_Name");
b.ToTable("Actions");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Edge", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Actions")
.HasColumnType("nvarchar(max)")
.HasColumnName("Actions");
b.Property<double>("AllowedDeviationTheta")
.HasColumnType("float")
.HasColumnName("AllowedDeviationTheta");
b.Property<double>("AllowedDeviationXy")
.HasColumnType("float")
.HasColumnName("AllowedDeviationXy");
b.Property<double>("ControlPoint1X")
.HasColumnType("float")
.HasColumnName("ControlPoint1X");
b.Property<double>("ControlPoint1Y")
.HasColumnType("float")
.HasColumnName("ControlPoint1Y");
b.Property<double>("ControlPoint2X")
.HasColumnType("float")
.HasColumnName("ControlPoint2X");
b.Property<double>("ControlPoint2Y")
.HasColumnType("float")
.HasColumnName("ControlPoint2Y");
b.Property<byte>("DirectionAllowed")
.HasColumnType("tinyint")
.HasColumnName("DirectionAllowed");
b.Property<Guid>("EndNodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("EndNodeId");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<double>("MaxHeight")
.HasColumnType("float")
.HasColumnName("MaxHeight");
b.Property<double>("MaxRotationSpeed")
.HasColumnType("float")
.HasColumnName("MaxRotationSpeed");
b.Property<double>("MaxSpeed")
.HasColumnType("float")
.HasColumnName("MaxSpeed");
b.Property<double>("MinHeight")
.HasColumnType("float")
.HasColumnName("MinHeight");
b.Property<bool>("RotationAllowed")
.HasColumnType("bit")
.HasColumnName("RotationAllowed");
b.Property<Guid>("StartNodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("StartNodeId");
b.Property<byte>("TrajectoryDegree")
.HasColumnType("tinyint")
.HasColumnName("TrajectoryDegree");
b.HasKey("Id");
b.HasIndex("EndNodeId");
b.HasIndex("StartNodeId");
b.HasIndex(new[] { "MapId" }, "IX_Edge_MapId");
b.ToTable("Edges");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Element", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<bool>("IsOpen")
.HasColumnType("bit")
.HasColumnName("IsOpen");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<Guid>("ModelId")
.HasColumnType("uniqueidentifier")
.HasColumnName("ModelId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<Guid>("NodeId")
.HasColumnType("uniqueidentifier")
.HasColumnName("NodeId");
b.Property<double>("OffsetX")
.HasColumnType("float")
.HasColumnName("OffsetX");
b.Property<double>("OffsetY")
.HasColumnType("float")
.HasColumnName("OffsetY");
b.HasKey("Id");
b.HasIndex("ModelId");
b.HasIndex("NodeId")
.IsUnique();
b.HasIndex(new[] { "MapId", "ModelId" }, "IX_Element_MapId_ModelId");
b.ToTable("Elements");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Content")
.HasColumnType("nvarchar(max)")
.HasColumnName("Content");
b.Property<double>("Height")
.HasColumnType("float")
.HasColumnName("Height");
b.Property<int>("Image1Height")
.HasColumnType("int")
.HasColumnName("Image1Height");
b.Property<int>("Image1Width")
.HasColumnType("int")
.HasColumnName("Image1Width");
b.Property<int>("Image2Height")
.HasColumnType("int")
.HasColumnName("Image2Height");
b.Property<int>("Image2Width")
.HasColumnType("int")
.HasColumnName("Image2Width");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("Width")
.HasColumnType("float")
.HasColumnName("Width");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_ElementModel_MapId_Name");
b.ToTable("ElementModels");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Map", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<bool>("Active")
.HasColumnType("bit")
.HasColumnName("Active");
b.Property<string>("Description")
.HasColumnType("ntext")
.HasColumnName("Description");
b.Property<double>("EdgeAllowedDeviationThetaDefault")
.HasColumnType("float")
.HasColumnName("EdgeAllowedDeviationThetaDefault");
b.Property<double>("EdgeAllowedDeviationXyDefault")
.HasColumnType("float")
.HasColumnName("EdgeAllowedDeviationXyDefault");
b.Property<double>("EdgeCurveMaxSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeCurveMaxSpeedDefault");
b.Property<byte>("EdgeDirectionAllowedDefault")
.HasColumnType("tinyint")
.HasColumnName("EdgeDirectionAllowedDefault");
b.Property<double>("EdgeMaxHeightDefault")
.HasColumnType("float")
.HasColumnName("EdgeMaxHeightDefault");
b.Property<double>("EdgeMaxRotationSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeMaxRoataionSpeedDefault");
b.Property<double>("EdgeMinHeightDefault")
.HasColumnType("float")
.HasColumnName("EdgeMinHeightDefault");
b.Property<double>("EdgeMinLengthDefault")
.HasColumnType("float")
.HasColumnName("EdgeMinLengthDefault");
b.Property<bool>("EdgeRotationAllowedDefault")
.HasColumnType("bit")
.HasColumnName("EdgeRotationAllowedDefault");
b.Property<double>("EdgeStraightMaxSpeedDefault")
.HasColumnType("float")
.HasColumnName("EdgeStraightMaxSpeedDefault");
b.Property<double>("ImageHeight")
.HasColumnType("float")
.HasColumnName("ImageHeight");
b.Property<double>("ImageWidth")
.HasColumnType("float")
.HasColumnName("ImageWidth");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("NodeAllowedDeviationThetaDefault")
.HasColumnType("float")
.HasColumnName("NodeAllowedDeviationThetaDefault");
b.Property<double>("NodeAllowedDeviationXyDefault")
.HasColumnType("float")
.HasColumnName("NodeAllowedDeviationXyDefault");
b.Property<long>("NodeCount")
.HasColumnType("BigInt")
.HasColumnName("NodeCount");
b.Property<bool>("NodeNameAutoGenerate")
.HasColumnType("bit")
.HasColumnName("NodeNameAutoGenerate");
b.Property<string>("NodeNameTemplateDefault")
.HasColumnType("nvarchar(64)")
.HasColumnName("NodeNameTemplateDefault");
b.Property<double>("OriginX")
.HasColumnType("float")
.HasColumnName("OriginX");
b.Property<double>("OriginY")
.HasColumnType("float")
.HasColumnName("OriginY");
b.Property<double>("Resolution")
.HasColumnType("float")
.HasColumnName("Resolution");
b.Property<string>("VDA5050")
.HasColumnType("nvarchar(max)")
.HasColumnName("VDA5050");
b.Property<Guid>("VersionId")
.HasColumnType("uniqueidentifier")
.HasColumnName("VersionId");
b.Property<double>("ViewHeight")
.HasColumnType("float")
.HasColumnName("ViewHeight");
b.Property<double>("ViewWidth")
.HasColumnType("float")
.HasColumnName("ViewWidth");
b.Property<double>("ViewX")
.HasColumnType("float")
.HasColumnName("ViewX");
b.Property<double>("ViewY")
.HasColumnType("float")
.HasColumnName("ViewY");
b.Property<double>("ZoneMinSquareDefault")
.HasColumnType("float")
.HasColumnName("ZoneMinSquareDefault");
b.HasKey("Id");
b.ToTable("Maps");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<string>("Actions")
.HasColumnType("nvarchar(max)")
.HasColumnName("Actions");
b.Property<double>("AllowedDeviationTheta")
.HasColumnType("float")
.HasColumnName("AllowedDeviationTheta");
b.Property<double>("AllowedDeviationXy")
.HasColumnType("float")
.HasColumnName("AllowedDeviationXy");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<double>("Theta")
.HasColumnType("float")
.HasColumnName("Theta");
b.Property<double>("X")
.HasColumnType("float")
.HasColumnName("X");
b.Property<double>("Y")
.HasColumnType("float")
.HasColumnName("Y");
b.HasKey("Id");
b.HasIndex(new[] { "MapId", "Name" }, "IX_Node_MapId_Name");
b.ToTable("Nodes");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Zone", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier")
.HasColumnName("Id");
b.Property<Guid>("MapId")
.HasColumnType("uniqueidentifier")
.HasColumnName("MapId");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(64)")
.HasColumnName("Name");
b.Property<int>("Type")
.HasColumnType("int")
.HasColumnName("Type");
b.Property<double>("X1")
.HasColumnType("float")
.HasColumnName("X1");
b.Property<double>("X2")
.HasColumnType("float")
.HasColumnName("X2");
b.Property<double>("X3")
.HasColumnType("float")
.HasColumnName("X3");
b.Property<double>("X4")
.HasColumnType("float")
.HasColumnName("X4");
b.Property<double>("Y1")
.HasColumnType("float")
.HasColumnName("Y1");
b.Property<double>("Y2")
.HasColumnType("float")
.HasColumnName("Y2");
b.Property<double>("Y3")
.HasColumnType("float")
.HasColumnName("Y3");
b.Property<double>("Y4")
.HasColumnType("float")
.HasColumnName("Y4");
b.HasKey("Id");
b.HasIndex(new[] { "MapId" }, "IX_Zone_MapId");
b.ToTable("Zones");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Action", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Actions")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Edge", b =>
{
b.HasOne("RobotNet.MapManager.Data.Node", "EndNode")
.WithMany("EndEdges")
.HasForeignKey("EndNodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Edges")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Node", "StartNode")
.WithMany("StartEdges")
.HasForeignKey("StartNodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("EndNode");
b.Navigation("Map");
b.Navigation("StartNode");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Element", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Elements")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.ElementModel", "Model")
.WithMany("Elements")
.HasForeignKey("ModelId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("RobotNet.MapManager.Data.Node", "Node")
.WithOne("Element")
.HasForeignKey("RobotNet.MapManager.Data.Element", "NodeId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
b.Navigation("Model");
b.Navigation("Node");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("ElementModels")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Nodes")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Zone", b =>
{
b.HasOne("RobotNet.MapManager.Data.Map", "Map")
.WithMany("Zones")
.HasForeignKey("MapId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("Map");
});
modelBuilder.Entity("RobotNet.MapManager.Data.ElementModel", b =>
{
b.Navigation("Elements");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Map", b =>
{
b.Navigation("Actions");
b.Navigation("Edges");
b.Navigation("ElementModels");
b.Navigation("Elements");
b.Navigation("Nodes");
b.Navigation("Zones");
});
modelBuilder.Entity("RobotNet.MapManager.Data.Node", b =>
{
b.Navigation("Element");
b.Navigation("EndEdges");
b.Navigation("StartEdges");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace RobotNet.MapManager.Data;
#nullable disable
[Table("Nodes")]
[Index(nameof(MapId), nameof(Name), Name = "IX_Node_MapId_Name")]
public class Node
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("MapId", TypeName = "uniqueidentifier")]
[Required]
public Guid MapId { get; set; }
[Column("Name", TypeName = "nvarchar(64)")]
public string Name { get; set; }
[Column("X", TypeName = "float")]
[Required]
public double X { get; set; }
[Column("Y", TypeName = "float")]
[Required]
public double Y { get; set; }
[Column("Theta", TypeName = "float")]
[Required]
public double Theta { get; set; }
[Column("AllowedDeviationXy", TypeName = "float")]
public double AllowedDeviationXy { get; set; }
[Column("AllowedDeviationTheta", TypeName = "float")]
public double AllowedDeviationTheta { get; set; }
[Column("Actions", TypeName = "nvarchar(max)")]
public string Actions { get; set; }
public Map Map { get; set; }
public Element Element { get; set; }
public ICollection<Edge> StartEdges { get; } = [];
public ICollection<Edge> EndEdges { get; } = [];
}

View File

@@ -0,0 +1,61 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
using RobotNet.MapShares.Enums;
namespace RobotNet.MapManager.Data;
[Table("Zones")]
[Index(nameof(MapId), Name = "IX_Zone_MapId")]
public class Zone
{
[Column("Id", TypeName = "uniqueidentifier")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Id { get; set; }
[Column("MapId", TypeName = "uniqueidentifier")]
[Required]
public Guid MapId { get; set; }
[Column("Type", TypeName = "int")]
[Required]
public ZoneType Type { get; set; }
[Column("Name", TypeName = "nvarchar(64)")]
[Required]
public string Name { get; set; } = "";
[Column("X1", TypeName = "float")]
[Required]
public double X1 { get; set; }
[Column("Y1", TypeName = "float")]
[Required]
public double Y1 { get; set; }
[Column("X2", TypeName = "float")]
[Required]
public double X2 { get; set; }
[Column("Y2", TypeName = "float")]
[Required]
public double Y2 { get; set; }
[Column("X3", TypeName = "float")]
[Required]
public double X3 { get; set; }
[Column("Y3", TypeName = "float")]
[Required]
public double Y3 { get; set; }
[Column("X4", TypeName = "float")]
public double X4 { get; set; }
[Column("Y4", TypeName = "float")]
public double Y4 { get; set; }
public Map Map { get; set; } = default!;
}