diff --git a/.idea/.idea.HopFrame/.idea/workspace.xml b/.idea/.idea.HopFrame/.idea/workspace.xml
index 66cd2af..be4a925 100644
--- a/.idea/.idea.HopFrame/.idea/workspace.xml
+++ b/.idea/.idea.HopFrame/.idea/workspace.xml
@@ -10,24 +10,20 @@
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -94,26 +90,26 @@
- {
+ "keyToString": {
+ ".NET Launch Settings Profile.HopFrame.Testing.executor": "Run",
+ ".NET Launch Settings Profile.HopFrame.Testing: https.executor": "Run",
+ ".NET Project.HopFrame.Testing.executor": "Run",
+ "72b118b0-a6fc-4561-acdf-74f0b454dbb8.executor": "Debug",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "dcdf1689-dc07-47e4-8824-2e60a4fbf301.executor": "Debug",
+ "git-widget-placeholder": "!18 on feature/unit-tests",
+ "list.type.of.created.stylesheet": "CSS",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "settings.editor.selected.configurable": "preferences.environmentSetup",
+ "vue.rearranger.settings.migration": "true"
}
-}]]>
+}
@@ -171,7 +167,8 @@
-
+
+
@@ -301,12 +298,80 @@
1737208088933
-
+
+
+ 1737212497960
+
+
+
+ 1737212497960
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -327,6 +392,7 @@
-
+
+
\ No newline at end of file
diff --git a/src/HopFrame.Core/Config/PropertyConfig.cs b/src/HopFrame.Core/Config/PropertyConfig.cs
index 1860c8a..5322a37 100644
--- a/src/HopFrame.Core/Config/PropertyConfig.cs
+++ b/src/HopFrame.Core/Config/PropertyConfig.cs
@@ -20,9 +20,9 @@ public class PropertyConfig(PropertyInfo info, TableConfig table, int nthPropert
public bool DisplayValue { get; set; } = true;
public bool TextArea { get; set; }
public int TextAreaRows { get; set; } = 16;
- public bool IsRelation { get; set; }
- public bool IsRequired { get; set; }
- public bool IsEnumerable { get; set; }
+ public bool IsRelation { get; internal set; }
+ public bool IsRequired { get; internal set; }
+ public bool IsEnumerable { get; internal set; }
public bool IsListingProperty { get; set; }
public int Order { get; set; } = nthProperty;
}
diff --git a/src/HopFrame.Core/Config/TableConfig.cs b/src/HopFrame.Core/Config/TableConfig.cs
index c85c32a..6a5ad7c 100644
--- a/src/HopFrame.Core/Config/TableConfig.cs
+++ b/src/HopFrame.Core/Config/TableConfig.cs
@@ -99,10 +99,11 @@ public class TableConfigurator(TableConfig config) {
/// The configurator for the virtual property
///
public PropertyConfigurator AddVirtualProperty(string name, Func template) {
- var prop = new PropertyConfig(InnerConfig.Properties.First().Info, InnerConfig, InnerConfig.Properties.Count);
- prop.Name = name;
- prop.IsListingProperty = true;
- prop.Formatter = (obj, provider) => template.Invoke((TModel)obj, provider);
+ var prop = new PropertyConfig(InnerConfig.Properties.First().Info, InnerConfig, InnerConfig.Properties.Count) {
+ Name = name,
+ IsListingProperty = true,
+ Formatter = (obj, provider) => template.Invoke((TModel)obj, provider)
+ };
InnerConfig.Properties.Add(prop);
return new PropertyConfigurator(prop);
}
diff --git a/src/HopFrame.Core/Services/Implementations/TableManager.cs b/src/HopFrame.Core/Services/Implementations/TableManager.cs
index 33c74e7..d682af9 100644
--- a/src/HopFrame.Core/Services/Implementations/TableManager.cs
+++ b/src/HopFrame.Core/Services/Implementations/TableManager.cs
@@ -9,7 +9,7 @@ internal sealed class TableManager(DbContext context, TableConfig config
public IQueryable