Skip to content

Commit 4dbe01d

Browse files
authored
Merge pull request #553 from loresoft/pacoweb-master
Pacoweb master
2 parents bab66a8 + c6a1602 commit 4dbe01d

File tree

5 files changed

+59
-1
lines changed

5 files changed

+59
-1
lines changed

src/EntityFrameworkCore.Generator.Core/CodeGenerator.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,24 +436,28 @@ private void ConfigureMySqlServices(IServiceCollection services)
436436
{
437437
var designTimeServices = new Pomelo.EntityFrameworkCore.MySql.Design.Internal.MySqlDesignTimeServices();
438438
designTimeServices.ConfigureDesignTimeServices(services);
439+
services.AddEntityFrameworkMySqlNetTopologySuite();
439440
}
440441

441442
private void ConfigurePostgresServices(IServiceCollection services)
442443
{
443444
var designTimeServices = new Npgsql.EntityFrameworkCore.PostgreSQL.Design.Internal.NpgsqlDesignTimeServices();
444445
designTimeServices.ConfigureDesignTimeServices(services);
446+
services.AddEntityFrameworkNpgsqlNetTopologySuite();
445447
}
446448

447449
private void ConfigureSqlServerServices(IServiceCollection services)
448450
{
449451
var designTimeServices = new Microsoft.EntityFrameworkCore.SqlServer.Design.Internal.SqlServerDesignTimeServices();
450452
designTimeServices.ConfigureDesignTimeServices(services);
453+
services.AddEntityFrameworkSqlServerNetTopologySuite();
451454
}
452455

453456
private void ConfigureSqliteServices(IServiceCollection services)
454457
{
455458
var designTimeServices = new Microsoft.EntityFrameworkCore.Sqlite.Design.Internal.SqliteDesignTimeServices();
456459
designTimeServices.ConfigureDesignTimeServices(services);
460+
services.AddEntityFrameworkSqliteNetTopologySuite();
457461
}
458462

459463
private void ConfigureOracleServices(IServiceCollection services)

src/EntityFrameworkCore.Generator.Core/EntityFrameworkCore.Generator.Core.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<TargetFramework>net8.0</TargetFramework>
44
<RootNamespace>EntityFrameworkCore.Generator</RootNamespace>
@@ -7,8 +7,12 @@
77

88
<ItemGroup>
99
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.5.0" />
10+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite" Version="5.0.8" />
11+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite" Version="5.0.8" />
1012
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="8.0.0" />
13+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite" Version="5.0.7" />
1114
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.3" />
15+
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.NetTopologySuite" Version="5.0.1" />
1216
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.3" />
1317
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.3" />
1418
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.3" />

test/EntityFrameworkCore.Generator.Core.Tests/CodeGeneratorTests.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using FluentAssertions;
33
using FluentCommand.SqlServer.Tests;
44
using Microsoft.Extensions.Logging.Abstractions;
5+
using System.IO;
56
using Xunit;
67
using Xunit.Abstractions;
78

@@ -26,4 +27,38 @@ public void Generate()
2627
result.Should().BeTrue();
2728
}
2829

30+
[Fact]
31+
public void GenerateSpatial()
32+
{
33+
var generatorOptions = new GeneratorOptions();
34+
generatorOptions.Database.ConnectionString = Database.ConnectionString;
35+
36+
var generator = new CodeGenerator(NullLoggerFactory.Instance);
37+
var result = generator.Generate(generatorOptions);
38+
39+
result.Should().BeTrue();
40+
41+
const string spatialTableName = "CitiesSpatial";
42+
43+
var citiesSpatialEntityFile = Path.Combine(generatorOptions.Data.Entity.Directory, spatialTableName + ".cs");
44+
var citiesSpatialMappingFile = Path.Combine(generatorOptions.Data.Mapping.Directory, spatialTableName + "Map.cs");
45+
46+
var citiesSpatialEntityContent = File.ReadAllText(citiesSpatialEntityFile);
47+
var citiesSpatialMappingContent = File.ReadAllText(citiesSpatialMappingFile);
48+
49+
citiesSpatialEntityContent.Contains("public NetTopologySuite.Geometries.Geometry GeometryField { get; set; }").Should().BeTrue();
50+
citiesSpatialEntityContent.Contains("public NetTopologySuite.Geometries.Geometry GeographyField { get; set; }").Should().BeTrue();
51+
52+
citiesSpatialMappingContent.Contains("builder.Property(t => t.GeometryField)" + System.Environment.NewLine +
53+
" .IsRequired()" + System.Environment.NewLine +
54+
" .HasColumnName(\"GeometryField\")" + System.Environment.NewLine +
55+
" .HasColumnType(\"geometry\");").Should().BeTrue();
56+
57+
citiesSpatialMappingContent.Contains("builder.Property(t => t.GeographyField)" + System.Environment.NewLine +
58+
" .IsRequired()" + System.Environment.NewLine +
59+
" .HasColumnName(\"GeographyField\")" + System.Environment.NewLine +
60+
" .HasColumnType(\"geography\");").Should().BeTrue();
61+
62+
}
63+
2964
}

test/EntityFrameworkCore.Generator.Core.Tests/Scripts/Script001.Tracker.Schema.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ CREATE TABLE [dbo].[UserRole] (
142142
CONSTRAINT [PK_UserRole] PRIMARY KEY ([UserId], [RoleId])
143143
);
144144

145+
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CitiesSpatial]') AND type in (N'U'))
146+
CREATE TABLE [dbo].[CitiesSpatial](
147+
[Id] int IDENTITY(1,1) NOT NULL,
148+
[Name] [nvarchar](50) NULL,
149+
[GeometryField] [geometry] NOT NULL,
150+
[GeographyField] [geography] NOT NULL,
151+
CONSTRAINT [PK_CitiesSpatial] PRIMARY KEY ([Id])
152+
)
145153

146154
-- Foreign Keys
147155
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Task_Priority_PriorityId]') AND parent_object_id = OBJECT_ID(N'[dbo].[Task]'))

test/EntityFrameworkCore.Generator.Core.Tests/Scripts/Script002.Tracker.Data.sql

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,10 @@ WHEN MATCHED THEN
8484
UPDATE SET t.[Name] = s.[Name], t.[Description] = s.[Description]
8585
OUTPUT $action as [Action];
8686

87+
-- Table [dbo].[CitiesSpatial] data
88+
89+
INSERT INTO [dbo].[CitiesSpatial] VALUES
90+
('Sydney', 'POINT(151.2 -33.8)', 'POINT(151.2 -33.8)'),
91+
('Athens', 'POINT(23.7 38)', 'POINT(23.7 38)'),
92+
('Beijing', 'POINT(116.4 39.9)', 'POINT(116.4 39.9)'),
93+
('London', 'POINT(-0.15 51.5)', 'POINT(-0.15 51.5)');

0 commit comments

Comments
 (0)