diff --git a/src/Dhgms.Nucleotide.Analyzers/Dhgms.Nucleotide.Analyzers.csproj b/src/Dhgms.Nucleotide.Analyzers/Dhgms.Nucleotide.Analyzers.csproj
index e20f0141..eb7e0662 100644
--- a/src/Dhgms.Nucleotide.Analyzers/Dhgms.Nucleotide.Analyzers.csproj
+++ b/src/Dhgms.Nucleotide.Analyzers/Dhgms.Nucleotide.Analyzers.csproj
@@ -1,7 +1,7 @@
- netstandard2.1
+ netstandard2.0
\ No newline at end of file
diff --git a/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerationModel.cs b/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerationModel.cs
new file mode 100644
index 00000000..3648324e
--- /dev/null
+++ b/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerationModel.cs
@@ -0,0 +1,22 @@
+using System;
+using Dhgms.Nucleotide.Generators.GeneratorProcessors;
+using Dhgms.Nucleotide.Generators.Models;
+using Dhgms.Nucleotide.Generators.PropertyInfo;
+
+namespace Dhgms.Nucleotide.Generators.Features.EntityFramework
+{
+ public sealed class EntityFrameworkDbContextGenerationModel : IClassName
+ {
+ public EntityGenerationModel[] DbSetEntities
+ {
+ get;
+ set;
+ }
+
+ public string ClassName
+ {
+ get;
+ set;
+ }
+ }
+}
diff --git a/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerator.cs b/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerator.cs
index 5cdda146..5cc79519 100644
--- a/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerator.cs
+++ b/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGenerator.cs
@@ -10,7 +10,7 @@ namespace Dhgms.Nucleotide.Generators.Features.EntityFramework
///
/// Code Generator for Entity Framework DB Context
///
- public abstract class EntityFrameworkDbContextGenerator : BaseGenerator
+ public abstract class EntityFrameworkDbContextGenerator : BaseGenerator
{
///
protected override string GetNamespace()
diff --git a/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGeneratorProcessor.cs b/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGeneratorProcessor.cs
index b532613d..4f2ba3be 100644
--- a/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGeneratorProcessor.cs
+++ b/src/Dhgms.Nucleotide.Generators/Features/EntityFramework/EntityFrameworkDbContextGeneratorProcessor.cs
@@ -17,12 +17,12 @@ namespace Dhgms.Nucleotide.Generators.Features.EntityFramework
///
/// Code Generator for Entity Framework DB Context
///
- public sealed class EntityFrameworkDbContextGeneratorProcessor : BaseGeneratorProcessor
+ public sealed class EntityFrameworkDbContextGeneratorProcessor : BaseGeneratorProcessor
{
///
public override NamespaceDeclarationSyntax GenerateObjects(
NamespaceDeclarationSyntax namespaceDeclaration,
- INucleotideGenerationModel nucleotideGenerationModel)
+ INucleotideGenerationModel nucleotideGenerationModel)
{
var generationModelEntityGenerationModel = nucleotideGenerationModel.EntityGenerationModel;
@@ -35,7 +35,12 @@ public sealed class EntityFrameworkDbContextGeneratorProcessor : BaseGeneratorPr
var classDeclarations = new List();
var suffix = GetClassSuffix();
- classDeclarations.Add(GetClassDeclarationSyntax(generationModelEntityGenerationModel, suffix));
+
+ foreach (var entityFrameworkDbContextGenerationModel in generationModelEntityGenerationModel)
+ {
+ classDeclarations.Add(GetClassDeclarationSyntax(entityFrameworkDbContextGenerationModel, suffix));
+ }
+
var usings = GetUsingDirectives();
namespaceDeclaration = namespaceDeclaration.AddUsings(usings);
@@ -45,7 +50,7 @@ public sealed class EntityFrameworkDbContextGeneratorProcessor : BaseGeneratorPr
return namespaceDeclaration;
}
- private MemberDeclarationSyntax[] GetMembers(string className, string entityName, IEntityGenerationModel[] generationModelEntityGenerationModel)
+ private MemberDeclarationSyntax[] GetMembers(string className, EntityGenerationModel[] generationModelEntityGenerationModel)
{
var result = new List();
@@ -123,7 +128,7 @@ private ConstructorDeclarationSyntax GetConstructorWithDbOptions(string classNam
/// Gets the method declarations to be generated
///
///
- private MemberDeclarationSyntax[] GetMethodDeclarations(IEntityGenerationModel[] generationModelEntityGenerationModel)
+ private MemberDeclarationSyntax[] GetMethodDeclarations(EntityGenerationModel[] generationModelEntityGenerationModel)
{
var results = new[]
{
@@ -137,13 +142,13 @@ private MemberDeclarationSyntax[] GetMethodDeclarations(IEntityGenerationModel[]
/// Gets the property declarations to be generated
///
///
- private PropertyDeclarationSyntax[] GetPropertyDeclarations(IEntityGenerationModel[] generationModelEntityGenerationModel)
+ private PropertyDeclarationSyntax[] GetPropertyDeclarations(EntityGenerationModel[] generationModelEntityGenerationModel)
{
return generationModelEntityGenerationModel?.Select(GetPropertyDeclaration).ToArray();
}
private PropertyDeclarationSyntax GetPropertyDeclaration(
- IEntityGenerationModel generationModelEntityGenerationModel)
+ EntityGenerationModel generationModelEntityGenerationModel)
{
var setType = SyntaxFactory.ParseTypeName($"Set");
var setCreation = SyntaxFactory.InvocationExpression(setType);
@@ -190,12 +195,14 @@ private PropertyDeclarationSyntax[] GetPropertyDeclarations(IEntityGenerationMod
// return result.ToArray();
//}
- private MemberDeclarationSyntax GetClassDeclarationSyntax(IEntityGenerationModel[] generationModelEntityGenerationModel, string suffix)
+ private MemberDeclarationSyntax GetClassDeclarationSyntax(EntityFrameworkDbContextGenerationModel generationModelEntityGenerationModel, string suffix)
{
// TODO : our model needs a parent name.
- var entityName = "Test";
+ var entityName = generationModelEntityGenerationModel.ClassName;
var className = $"{entityName}{suffix}";
- var members = GetMembers(className, entityName, generationModelEntityGenerationModel);
+ var members = GetMembers(
+ className,
+ generationModelEntityGenerationModel.DbSetEntities);
// SyntaxFactory.Token(SyntaxKind.SealedKeyword)
@@ -331,7 +338,7 @@ protected override PropertyDeclarationSyntax GetReadOnlyPropertyDeclaration(Prop
return null;
}
- private MemberDeclarationSyntax GetOnModelCreatingMethodDeclaration(IEntityGenerationModel[] generationModelEntityGenerationModel)
+ private MemberDeclarationSyntax GetOnModelCreatingMethodDeclaration(EntityGenerationModel[] generationModelEntityGenerationModel)
{
var methodName = $"OnModelCreating";
@@ -347,7 +354,7 @@ private MemberDeclarationSyntax GetOnModelCreatingMethodDeclaration(IEntityGener
return declaration;
}
- private StatementSyntax GetApplyConfigurationInvocationDeclaration(IEntityGenerationModel entityGenerationModel)
+ private StatementSyntax GetApplyConfigurationInvocationDeclaration(EntityGenerationModel entityGenerationModel)
{
var invokeExpression = RoslynGenerationHelpers.GetMethodOnVariableInvocationSyntax("modelBuilder",
"ApplyConfiguration",
diff --git a/src/Dhgms.Nucleotide.ModelTests/ModelGenerationDetails.cs b/src/Dhgms.Nucleotide.ModelTests/ModelGenerationDetails.cs
index ee2b7850..43925550 100644
--- a/src/Dhgms.Nucleotide.ModelTests/ModelGenerationDetails.cs
+++ b/src/Dhgms.Nucleotide.ModelTests/ModelGenerationDetails.cs
@@ -90,6 +90,24 @@ public class UserEntityGenerationModel : EntityGenerationModel
};
}
+ public class EntityFrameworkGenerationModelDetails : INucleotideGenerationModel
+ {
+ public EntityFrameworkDbContextGenerationModel[] EntityGenerationModel =>
+ new EntityFrameworkDbContextGenerationModel[]
+ {
+ new EntityFrameworkDbContextGenerationModel
+ {
+ ClassName = "SomeProduct",
+ DbSetEntities = new EntityGenerationModel[]
+ {
+ new UserEntityGenerationModel(),
+ }
+ }
+ };
+
+ public string RootNamespace => "Dhgms.Nucleotide.GenerationTests";
+ }
+
public class ModelGenerationDetails : INucleotideGenerationModel
{
public IEntityGenerationModel[] EntityGenerationModel => new IEntityGenerationModel[]
diff --git a/src/Dhgms.Nucleotide.ModelTests/TestEntityFrameworkDbContextGenerator.cs b/src/Dhgms.Nucleotide.ModelTests/TestEntityFrameworkDbContextGenerator.cs
index 59031943..af265495 100644
--- a/src/Dhgms.Nucleotide.ModelTests/TestEntityFrameworkDbContextGenerator.cs
+++ b/src/Dhgms.Nucleotide.ModelTests/TestEntityFrameworkDbContextGenerator.cs
@@ -11,6 +11,6 @@ namespace Dhgms.Nucleotide.ModelTests
[Generator]
public sealed class TestEntityFrameworkDbContextGenerator : EntityFrameworkDbContextGenerator
{
- protected override INucleotideGenerationModel NucleotideGenerationModel => new ModelGenerationDetails();
+ protected override INucleotideGenerationModel NucleotideGenerationModel => new EntityFrameworkGenerationModelDetails();
}
}
diff --git a/src/Dhgms.Nucleotide.UnitTests/Dhgms.Nucleotide.UnitTests.csproj b/src/Dhgms.Nucleotide.UnitTests/Dhgms.Nucleotide.UnitTests.csproj
index 0aaa9e72..f53272ae 100644
--- a/src/Dhgms.Nucleotide.UnitTests/Dhgms.Nucleotide.UnitTests.csproj
+++ b/src/Dhgms.Nucleotide.UnitTests/Dhgms.Nucleotide.UnitTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp5.0
+ netcoreapp6.0
false
full
True
diff --git a/src/Dhgms.Nucleotide.UnitTests/Generators/Features/EntityFrameworkDbContextGeneratorTests.cs b/src/Dhgms.Nucleotide.UnitTests/Generators/Features/EntityFrameworkDbContextGeneratorTests.cs
index b04075f5..ce9d5bc4 100644
--- a/src/Dhgms.Nucleotide.UnitTests/Generators/Features/EntityFrameworkDbContextGeneratorTests.cs
+++ b/src/Dhgms.Nucleotide.UnitTests/Generators/Features/EntityFrameworkDbContextGeneratorTests.cs
@@ -15,7 +15,7 @@ namespace Dhgms.Nucleotide.UnitTests.Generators
[ExcludeFromCodeCoverage]
public static class EntityFrameworkDbContextGeneratorTests
{
- public sealed class ConstructorMethod : BaseGeneratorTests.BaseConstructorMethod
+ public sealed class ConstructorMethod : BaseGeneratorTests.BaseConstructorMethod
{
public ConstructorMethod(ITestOutputHelper output) : base(output)
{
@@ -27,7 +27,7 @@ public ConstructorMethod(ITestOutputHelper output) : base(output)
}
}
- public sealed class GenerateAsyncMethod : BaseGeneratorTests.BaseGenerateAsyncMethod
+ public sealed class GenerateAsyncMethod : BaseGeneratorTests.BaseGenerateAsyncMethod
{
public GenerateAsyncMethod(ITestOutputHelper output) : base(output)
{
diff --git a/src/Dhgms.Nucleotide/Dhgms.Nucleotide.csproj b/src/Dhgms.Nucleotide/Dhgms.Nucleotide.csproj
index 50b7faff..6504acab 100644
--- a/src/Dhgms.Nucleotide/Dhgms.Nucleotide.csproj
+++ b/src/Dhgms.Nucleotide/Dhgms.Nucleotide.csproj
@@ -1,6 +1,6 @@
- netcoreapp5.0
+ netstandard2.0
full
True