In a ongoing effort to subvert DbMetal to our desires, I've also added a
new option allow the selection of the entity types to be generated by
means of a regular expression.

As usual, diff follows and gzipped patch attached.

We needed this and the /noDatacontext option to generate each entity in
a different file when calling DbMetal from a script.

---
 .../CodeTextGenerator/CodeGenerator.Class.cs       |   10 +++++++++-
 src/DbMetal/Parameters.cs                          |    9 +++++++++
 2 files changed, 18 insertions(+), 1 deletions(-)

diff --git 
a/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Class.cs 
b/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Class.cs
index dcea168..82792aa 100644
--- 
a/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Class.cs
+++ 
b/src/DbMetal/Generator/Implementation/CodeTextGenerator/CodeGenerator.Class.cs
@@ -28,6 +28,7 @@ using System.Collections.Generic;
 using System.Data.Linq.Mapping;
 using System.Diagnostics;
 using System.Linq;
+using System.Text.RegularExpressions;
 using DbLinq.Schema.Dbml;
 using DbLinq.Schema.Dbml.Adapter;
 using DbLinq.Util;
@@ -48,7 +49,14 @@ namespace DbMetal.Generator.Implementation.CodeTextGenerator
     {
         protected virtual void WriteClasses(CodeWriter writer, Database 
schema, GenerationContext context)
         {
-            foreach (var table in schema.Tables)
+            // filter entities to be generated, accept everything by default
+            Regex filter = new Regex(".*", RegexOptions.Compiled);
+            if (context.Parameters.EntityFilter != null) {
+                // should match the whole type name
+                filter = new Regex("^"+context.Parameters.EntityFilter+"$", 
RegexOptions.Compiled);
+            }
+
+            foreach (var table in schema.Tables.Where(t => 
filter.IsMatch(t.Type.Name)))
                 WriteClass(writer, table, schema, context);
         }
 
diff --git a/src/DbMetal/Parameters.cs b/src/DbMetal/Parameters.cs
index e38badc..170d795 100644
--- a/src/DbMetal/Parameters.cs
+++ b/src/DbMetal/Parameters.cs
@@ -222,6 +222,15 @@ namespace DbMetal
         public bool NoDataContext { get; set; }
 
         /// <summary>
+        /// specifies which entities should be generated with a regex which
+        /// should match the whole type name
+        /// DbLinq specific
+        /// </summary>
+        [Option("Generate only entities that match the regex",
+            ValueName = "regex", Group = 4)]
+        public string EntityFilter { get; set; }
+
+        /// <summary>
         /// specifies a provider (which here is a pair or ISchemaLoader and 
IDbConnection implementors)
         /// SQLMetal compatible
         /// </summary>

-- 
Buongiorno.
Complimenti per l'ottima scelta.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DbLinq" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/dblinq?hl=en
-~----------~----~----~----~------~----~------~--~---

Attachment: 0002-Add-a-entityFilter-to-the-DbMetal-program.patch.gz
Description: GNU Zip compressed data

Reply via email to