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
-~----------~----~----~----~------~----~------~--~---
0002-Add-a-entityFilter-to-the-DbMetal-program.patch.gz
Description: GNU Zip compressed data
