Skip to content

Commit

Permalink
feat(efcore6): add support for efcore v6
Browse files Browse the repository at this point in the history
  • Loading branch information
jayharris committed Jan 25, 2022
1 parent 995c14c commit 5042133
Show file tree
Hide file tree
Showing 13 changed files with 734 additions and 2 deletions.
26 changes: 24 additions & 2 deletions src/entityframeworkcore/EntityFrameworkCore.sln
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29519.87
# Visual Studio Version 17
VisualStudioVersion = 17.0.32112.339
MinimumVisualStudioVersion = 15.0.26124.0
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{091B6554-596C-4EEC-B37E-271DB9B5E10A}"
EndProject
Expand Down Expand Up @@ -30,6 +30,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aranasoft.Cobweb.EntityFram
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aranasoft.Cobweb.EntityFrameworkCore5.Validation.Tests", "test\entityframeworkcore5.validation.tests\Aranasoft.Cobweb.EntityFrameworkCore5.Validation.Tests.csproj", "{5477CEB7-5A6E-4212-BC86-65509034E371}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aranasoft.Cobweb.EntityFrameworkCore6.Validation", "src\entityframeworkcore6.validation\Aranasoft.Cobweb.EntityFrameworkCore6.Validation.csproj", "{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Aranasoft.Cobweb.EntityFrameworkCore6.Validation.Tests", "test\entityframeworkcore6.validation.tests\Aranasoft.Cobweb.EntityFrameworkCore6.Validation.Tests.csproj", "{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -94,6 +98,22 @@ Global
{5477CEB7-5A6E-4212-BC86-65509034E371}.Release|Any CPU.Build.0 = Release|Any CPU
{5477CEB7-5A6E-4212-BC86-65509034E371}.Release|x64.ActiveCfg = Release|x64
{5477CEB7-5A6E-4212-BC86-65509034E371}.Release|x64.Build.0 = Release|x64
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Debug|x64.ActiveCfg = Debug|x64
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Debug|x64.Build.0 = Debug|x64
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Release|Any CPU.Build.0 = Release|Any CPU
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Release|x64.ActiveCfg = Release|x64
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D}.Release|x64.Build.0 = Release|x64
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Debug|x64.ActiveCfg = Debug|x64
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Debug|x64.Build.0 = Debug|x64
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Release|Any CPU.Build.0 = Release|Any CPU
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Release|x64.ActiveCfg = Release|x64
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -106,6 +126,8 @@ Global
{6B754961-97C2-43FE-8132-2B7FADEC03FA} = {381B9DD8-06CA-42CA-9A5A-69577E25B584}
{A25246BD-873C-460C-A65B-0C90740EE4F9} = {091B6554-596C-4EEC-B37E-271DB9B5E10A}
{5477CEB7-5A6E-4212-BC86-65509034E371} = {381B9DD8-06CA-42CA-9A5A-69577E25B584}
{5885A8A3-453C-4CE1-A2BB-1B2686B3728D} = {091B6554-596C-4EEC-B37E-271DB9B5E10A}
{689B40E5-6A6F-4D49-AF2D-CD9567B2DE9C} = {381B9DD8-06CA-42CA-9A5A-69577E25B584}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {77E1A84A-D7A1-4FAE-90E7-2D5C1912349A}
Expand Down
@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\netfx.props" />

<PropertyGroup>
<TargetFrameworks>net6.0</TargetFrameworks>
<AssemblyName>Aranasoft.Cobweb.EntityFrameworkCore.Validation</AssemblyName>
<RootNamespace>Aranasoft.Cobweb.EntityFrameworkCore.Validation</RootNamespace>
<VersionPrefix>1.60.0</VersionPrefix>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>

<PropertyGroup>
<Description>Schema validation and testing components for Entity Framework Core.</Description>
<PackageTags>entityframeworkcore;efcore;validation;$(PackageTags)</PackageTags>
</PropertyGroup>

<ItemGroup>
<Compile Include="..\entityframeworkcore2.validation\SchemaValidationException.cs" Link="SchemaValidationException.cs" />
<Compile Include="..\entityframeworkcore3.validation\SchemaValidationOptions.cs" Link="SchemaValidationOptions.cs" />
<Compile Include="..\entityframeworkcore2.validation\SchemaValidatorExtensions.cs" Link="SchemaValidatorExtensions.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="[6,7)" />
</ItemGroup>

</Project>
@@ -0,0 +1,176 @@
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Scaffolding.Metadata;

namespace Aranasoft.Cobweb.EntityFrameworkCore.Validation {
internal static class SchemaComparison {
public static bool TableExists(this DatabaseModel model, IEntityType type) {
return TableExists(model, type.GetSchema() ?? model.DefaultSchema, type.GetTableName());
}

public static bool ViewExists(this DatabaseModel model, string schema, string viewName) {
var checkedSchema = schema ?? model.DefaultSchema;
return model.Tables.Any(table => table.Schema == checkedSchema && table.Name == viewName);
}

public static DatabaseTable GetView(this DatabaseModel model, IEntityType type) {
return GetTable(model, type.GetViewSchema() ?? model.DefaultSchema, type.GetViewName());
}

public static DatabaseTable GetView(DatabaseModel model, string schema, string viewName) {
var checkedSchema = schema ?? model.DefaultSchema;
return model.Tables.FirstOrDefault(table => table.Schema == checkedSchema && table.Name == viewName);
}

public static bool ViewColumnExists(this DatabaseModel model, IProperty property) {
return ViewColumnExists(model, property.DeclaringEntityType, property);
}

public static bool ViewColumnExists(this DatabaseModel model,
IEntityType type,
IProperty property) {
return ViewColumnExists(model,
type.GetViewSchema(),
type.GetViewName(),
property.GetColumnName(StoreObjectIdentifier.View(type.GetViewName(), type.GetSchema())));
}

public static bool ViewColumnExists(this DatabaseModel model,
string schema,
string viewName,
string columnName) {
var viewModel = GetView(model, schema, viewName);
return viewModel != null && viewModel.Columns.Any(column => column.Name == columnName);
}

public static DatabaseColumn GetViewColumn(this DatabaseModel model, IProperty property) {
return GetViewColumn(model, property.DeclaringEntityType, property);
}

public static DatabaseColumn GetViewColumn(this DatabaseModel model, IEntityType type, IProperty property) {
return GetViewColumn(model,
type.GetViewSchema(),
type.GetViewName(),
property.GetColumnName(StoreObjectIdentifier.View(type.GetViewName(), type.GetSchema())));
}

public static DatabaseColumn GetViewColumn(this DatabaseModel model,
string schema,
string viewName,
string columnName) {
var viewModel = GetView(model, schema, viewName);
return viewModel?.Columns.FirstOrDefault(column => column.Name == columnName);
}

public static bool TableExists(this DatabaseModel model, string schema, string tableName) {
var checkedSchema = schema ?? model.DefaultSchema;
return model.Tables.Any(table => table.Schema == checkedSchema && table.Name == tableName);
}

public static DatabaseTable GetTable(this DatabaseModel model, IEntityType type) {
return GetTable(model, type.GetSchema() ?? model.DefaultSchema, type.GetTableName());
}

public static DatabaseTable GetTable(DatabaseModel model, string schema, string tableName) {
var checkedSchema = schema ?? model.DefaultSchema;
return model.Tables.FirstOrDefault(table => table.Schema == checkedSchema && table.Name == tableName);
}

public static bool TableColumnExists(this DatabaseModel model, IProperty property) {
return TableColumnExists(model, property.DeclaringEntityType, property);
}

public static bool TableColumnExists(this DatabaseModel model,
IEntityType type,
IProperty property) {
return TableColumnExists(model,
type.GetSchema(),
type.GetTableName(),
property.GetColumnName(StoreObjectIdentifier.Table(type.GetTableName(), type.GetSchema())));
}

public static bool TableColumnExists(this DatabaseModel model,
string schema,
string tableName,
string columnName) {
var tableModel = GetTable(model, schema, tableName);
return tableModel != null && tableModel.Columns.Any(column => column.Name == columnName);
}

public static DatabaseColumn GetTableColumn(this DatabaseModel model, IProperty property) {
return GetTableColumn(model, property.DeclaringEntityType, property);
}

public static DatabaseColumn GetTableColumn(this DatabaseModel model, IEntityType type, IProperty property) {
return GetTableColumn(model,
type.GetSchema(),
type.GetTableName(),
property.GetColumnName(StoreObjectIdentifier.Table(type.GetTableName(), type.GetSchema())));
}

public static DatabaseColumn GetTableColumn(this DatabaseModel model,
string schema,
string tableName,
string columnName) {
var tableModel = GetTable(model, schema, tableName);
return tableModel?.Columns.FirstOrDefault(column => column.Name == columnName);
}

public static bool IndexExists(this DatabaseModel model, IIndex index) {
var entityType = index.DeclaringEntityType;
return IndexExists(model, entityType.GetSchema(), entityType.GetTableName(), index.GetDatabaseName());
}

public static bool IndexExists(this DatabaseModel model, string schema, string tableName, string indexName) {
var tableModel = GetTable(model, schema, tableName);
return tableModel != null && tableModel.Indexes.Any(column => column.Name == indexName);
}

public static DatabaseIndex GetIndex(this DatabaseModel model, IIndex index) {
var entityType = index.DeclaringEntityType;
return GetIndex(model, entityType.GetSchema(), entityType.GetTableName(), index.GetDatabaseName());
}

public static DatabaseIndex GetIndex(this DatabaseModel model,
string schema,
string tableName,
string indexName) {
var tableModel = GetTable(model, schema, tableName);
return tableModel?.Indexes.FirstOrDefault(index => index.Name == indexName);
}

public static bool ForeignKeyExists(this DatabaseModel model,
IForeignKey foreignKey) {
var entityType = foreignKey.DeclaringEntityType;
return ForeignKeyExists(model,
entityType.GetSchema(),
entityType.GetTableName(),
foreignKey.GetConstraintName());
}

public static bool ForeignKeyExists(this DatabaseModel model,
string schema,
string tableName,
string foreignKeyName) {
var tableModel = GetTable(model, schema, tableName);
return tableModel != null && tableModel.ForeignKeys.Any(column => column.Name == foreignKeyName);
}

public static DatabaseForeignKey GetForeignKey(this DatabaseModel model, IForeignKey foreignKey) {
var entityType = foreignKey.DeclaringEntityType;
return GetForeignKey(model,
entityType.GetSchema(),
entityType.GetTableName(),
foreignKey.GetConstraintName());
}

public static DatabaseForeignKey GetForeignKey(this DatabaseModel model,
string schema,
string tableName,
string foreignKeyName) {
var tableModel = GetTable(model, schema, tableName);
return tableModel?.ForeignKeys.FirstOrDefault(index => index.Name == foreignKeyName);
}
}
}

0 comments on commit 5042133

Please sign in to comment.