/// <summary>
 /// Used to create the Entity class name.
 /// </summary>
 /// <remarks>Formula = [source.Name + <see cref="sEntity"/>]</remarks>
 /// <example>
 /// C# Template Code
 /// <code>
 /// ITable table = MyMeta.Databases["Northwind"].Tables["Employees"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(table, null);
 /// &lt;%=esPlugIn.Entity(source)%&gt; obj = new &lt;%=esPlugIn.Entity(source)%&gt;(); 
 /// 
 /// // or
 /// 
 /// IView view = MyMeta.Databases["Northwind"].Views["Product Sales for 1997"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(null, view);
 /// &lt;%=esPlugIn.Entity(source)%&gt; obj = new &lt;%=esPlugIn.Entity(source)%&gt;(); 
 /// </code>
 /// </example> 
 /// <param name="source">Use this method to write templates that operate on ITable/IView transparently</param>
 /// <returns>The Entity class name</returns>
 public string ProxyStubCollection(esPluginSource source)
 {
     if (source.table != null)
         return this.ProxyStubCollection(source.table);
     else
         return this.ProxyStubCollection(source.view);
 }
 /// <summary>
 /// Used to create the Query  concrete class name.
 /// </summary>
 /// <remarks>Formula = [source.Name + <see cref="sQuery"/>]
 /// <seealso cref="sQuery"/><seealso cref="esQuery"/>
 /// </remarks>
 /// <example>
 /// C# Template Code
 /// <code>
 /// ITable table = MyMeta.Databases["Northwind"].Tables["Employees"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(table, null);
 /// &lt;%=esPlugIn.Query(source)%&gt; obj = new &lt;%=esPlugIn.Query(source)%&gt;(); 
 /// 
 /// // or
 /// 
 /// IView view = MyMeta.Databases["Northwind"].Views["Product Sales for 1997"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(null, view);
 /// &lt;%=esPlugIn.Query(source)%&gt; obj = new &lt;%=esPlugIn.Query(source)%&gt;(); 
 /// </code>
 /// </example> 
 /// <param name="source">Use this method to write templates that operate on a ITable/IView transparently</param>
 /// <returns>The Query class name</returns>
 public string Query(esPluginSource source)
 {
     if (source.table != null)
         return this.Query(source.table);
     else
         return this.Query(source.view);
 }
 /// <summary>
 /// Used to create the LoadByPK stored procedure name.
 /// </summary>
 /// <remarks>Formula = [<see cref="sProcPrefix"/> + source.Name + <see cref="sProcLoadByPK"/> + <see cref="sProcSuffix"/>]
 /// </remarks>
 /// <example>
 /// C# Template Code
 /// <code>
 /// ITable table = MyMeta.Databases["Northwind"].Tables["Employees"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(table, null);
 /// &lt;%=esPlugIn.ProcLoadByPK(source)%&gt;
 /// 
 /// // or
 /// 
 /// IView view = MyMeta.Databases["Northwind"].Views["Product Sales for 1997"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(null, view);
 /// &lt;%=esPlugIn.ProcLoadByPK(source)%&gt; 
 /// </code>
 /// </example> 
 /// <param name="source">Use this method to write templates that operate on ITable/IView transparently</param>
 /// <returns>The LoadByPK stored procedure name</returns>
 public string ProcLoadByPK(esPluginSource source)
 {
     if (source.table != null)
         return this.ProcLoadByPK(source.table);
     else
         return this.ProcLoadByPK(source.view);
 }
 /// <summary>
 /// Used to create the Delete stored procedure name.
 /// </summary>
 /// <remarks>Formula = [<see cref="sProcPrefix"/> + source.Name + <see cref="sProcDelete"/> + <see cref="sProcSuffix"/>]
 /// </remarks>
 /// <example>
 /// C# Template Code
 /// <code>
 /// ITable table = MyMeta.Databases["Northwind"].Tables["Employees"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(table, null);
 /// &lt;%=esPlugIn.ProcDelete(source)%&gt;
 /// 
 /// // or
 /// 
 /// IView view = MyMeta.Databases["Northwind"].Views["Product Sales for 1997"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(null, view);
 /// &lt;%=esPlugIn.ProcDelete(source)%&gt; 
 /// </code>
 /// </example> 
 /// <param name="source">Use this method to write templates that operate on ITable/IView transparently</param>
 /// <returns>The Delete stored procedure name</returns>
 public string ProcDelete(esPluginSource source)
 {
     if (source.table != null)
         return this.ProcDelete(source.table);
     else
         return this.ProcDelete(source.view);
 }
 /// <summary>
 /// Used to create the esEntity or abstract class name.
 /// </summary>
 /// <remarks>Formula = [<see cref="sPrefix"/> + source.Name + <see cref="sEntity"/>]
 /// <seealso cref="sPrefix"/><seealso cref="sEntity"/><seealso cref="Entity"/>
 /// </remarks>
 /// <example>
 /// C# Template Code
 /// <code>
 /// ITable table = MyMeta.Databases["Northwind"].Tables["Employees"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(table, null);
 /// public class &lt;%=esPlugIn.Entity(source)%&gt; : &lt;%=esPlugIn.esEntity(source)%&gt; 
 /// 
 /// // or
 /// 
 /// IView view = MyMeta.Databases["Northwind"].Views["Product Sales for 1997"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(null, view);
 /// public class &lt;%=esPlugIn.Entity(source)%&gt; : &lt;%=esPlugIn.esEntity(source)%&gt; 
 /// </code>
 /// </example> 
 /// <param name="source">Use this method to write templates that operate on ITable/IView transparently</param>
 /// <returns>The esEntity or abstract class name</returns>
 public string esEntity(esPluginSource source)
 {
     if (source.table != null)
         return this.esEntity(source.table);
     else
         return this.esEntity(source.view);
 }
 /// <summary>
 /// Used to create the Metadata or concrete class name.
 /// </summary>
 /// <remarks>Formula = [source.Name + <see cref="sMetadata"/>]. There is no abstract class for the Metadata type.
 /// <seealso cref="sMetadata"/>
 /// </remarks>
 /// <example>
 /// C# Template Code
 /// <code>
 /// ITable table = MyMeta.Databases["Northwind"].Tables["Employees"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(table, null);
 /// public class &lt;%=esPlugIn.Metadata(table)%&gt; 
 /// {
 /// }
 /// 
 /// // or
 /// 
 /// IView view = MyMeta.Databases["Northwind"].Views["Product Sales for 1997"];
 /// EntitySpaces.PlugIn.esPluginSource source = new EntitySpaces.PlugIn.esPluginSource(null, view);
 /// public class &lt;%=esPlugIn.Metadata(view)%&gt;
 /// {
 /// } 
 /// </code>
 /// </example> 
 /// <param name="source">Use this method to write templates that operate on ITable/IView transparently</param>
 /// <returns>The Metadata class name</returns>
 public string Metadata(esPluginSource source)
 {
     if (source.table != null)
         return this.Metadata(source.table);
     else
         return this.Metadata(source.view);
 }