📄 clsllblgenerator.cs
字号:
public void CleanUp()
{
m_alTables.Clear();
m_alExcludedFields.Clear();
}
/// <summary>
/// Purpose: writes the baseclass which is used to derive the per-table C# classes from.
/// It's used to construct a valuable connection object, ready to use for the per-table C# classes'
/// methods.
/// </summary>
private void WriteCSBaseClass()
{
string sBaseClassFile = m_sNETOutputPath + m_sNETClassPrefix + "DBInteractionBase.cs";
string sInheritanceInterfaceList, sOverrideDispose;
if(File.Exists(sBaseClassFile))
{
// remove the file.
File.Delete(sBaseClassFile);
}
// write the file
StreamWriter swBaseClass = new StreamWriter(sBaseClassFile);
// Class file header
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("////////////////////////////////////////////////////////////////////////////////");
swBaseClass.WriteLine("// Description: Base class for Database Interaction. ");
swBaseClass.WriteLine("// Generated by LLBLGen v" + m_wMainWindow.sAppVersion + " on: " + DateTime.Now.ToLongDateString() + ", " + DateTime.Now.ToLongTimeString());
swBaseClass.WriteLine("// Because this class implements IDisposable, derived classes shouldn't do so.");
swBaseClass.WriteLine("///////////////////////////////////////////////////////////////////////////////");
}
swBaseClass.WriteLine("using System;");
swBaseClass.WriteLine("using System.Configuration;");
swBaseClass.WriteLine("using System.Data;");
swBaseClass.WriteLine("using System.Data.SqlClient;");
swBaseClass.WriteLine("using System.Data.SqlTypes;");
if(m_bNETIncludeCOMPlusSupport)
{
swBaseClass.WriteLine("using System.EnterpriseServices;");
swBaseClass.WriteLine("using System.Runtime.InteropServices;" + Environment.NewLine);
// emit assembly signing attributes.
swBaseClass.WriteLine("///////////////////////////////////////////////////////////////////////////");
swBaseClass.WriteLine("// Uncomment the following 2 lines if the assembly build with the generated classes");
swBaseClass.WriteLine("// is registered manually so it should be added to the GAC. Change values to your situation.");
swBaseClass.WriteLine("// [assembly: ApplicationName(\"MyCom+PackageName\")] // <-- UNCOMMENT THIS LINE. COM+ application name as it appears in the COM+ catalog.");
swBaseClass.WriteLine("// [assembly: AssemblyKeyFileAttribute(\"MyPublicKey.snk\")] // <-- UNCOMMENT THIS LINE. Strong name for assembly.");
swBaseClass.WriteLine("// Be sure to add 'Imports System.Reflection' to the Imports list if you uncomment the lines above.");
swBaseClass.WriteLine("///////////////////////////////////////////////////////////////////////////");
sInheritanceInterfaceList = "ServicedComponent, ICommonDBAccess";
sOverrideDispose = "override ";
}
else
{
sInheritanceInterfaceList = "IDisposable, ICommonDBAccess";
sOverrideDispose = "virtual ";
}
swBaseClass.WriteLine(Environment.NewLine + "namespace " + m_sNETNamespace);
swBaseClass.WriteLine("{");
// Global error enum
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t/// <summary>");
swBaseClass.WriteLine("\t/// Purpose: Error Enums used by this LLBL library.");
swBaseClass.WriteLine("\t/// </summary>");
}
swBaseClass.WriteLine("\tpublic enum LLBLError");
swBaseClass.WriteLine("\t{");
swBaseClass.WriteLine("\t\tAllOk");
swBaseClass.WriteLine("\t\t// Add more here (check the comma's!)");
swBaseClass.WriteLine("\t}");
swBaseClass.WriteLine(Environment.NewLine);
// Interface for common methods definition
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t/// <summary>");
swBaseClass.WriteLine("\t/// Purpose: General interface of the API generated. Contains only common methods of all classes.");
swBaseClass.WriteLine("\t/// </summary>");
}
swBaseClass.WriteLine("\tpublic interface ICommonDBAccess");
swBaseClass.WriteLine("\t{");
swBaseClass.WriteLine("\t\tbool\t\tInsert();");
swBaseClass.WriteLine("\t\tbool\t\tUpdate();");
swBaseClass.WriteLine("\t\tbool\t\tDelete();");
swBaseClass.WriteLine("\t\tDataTable\tSelectOne();");
swBaseClass.WriteLine("\t\tDataTable\tSelectAll();");
swBaseClass.WriteLine("\t}");
swBaseClass.WriteLine(Environment.NewLine);
// Base class declaration
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t/// <summary>");
swBaseClass.WriteLine("\t/// Purpose: Abstract base class for Database Interaction classes.");
if(m_bNETIncludeCOMPlusSupport)
{
swBaseClass.WriteLine("\t/// Class supports COM+ services and is therefor derived from ServicedComponent.");
}
swBaseClass.WriteLine("\t/// </summary>");
}
// COM+ attributes
if(m_bNETIncludeCOMPlusSupport)
{
swBaseClass.WriteLine("\t[ComVisible(true)]");
swBaseClass.WriteLine("\t[Serializable]");
if(m_bNETIncludeJITSupport)
{
swBaseClass.WriteLine("\t[JustInTimeActivation]");
}
if(m_bNETIncludeTransactionSupport)
{
swBaseClass.WriteLine("\t[Transaction(TransactionOption.Supported)]");
}
if(m_bNETIncludeObjectPoolingSupport)
{
swBaseClass.WriteLine("\t[ObjectPooling]");
}
if(m_bNETIncludeLoadBalancingSupport)
{
swBaseClass.WriteLine("\t[LoadBalancingSupported]");
}
if(m_iNETConnectionStringRetrieval == (int)eConnectionStringRetrieval.ConstructionString)
{
swBaseClass.WriteLine("\t[ConstructionEnabled(Enabled = true, Default = @\"" + m_sConnectionString + "\")]");
}
}
swBaseClass.WriteLine("\tpublic abstract class " + m_sNETClassPrefix + "DBInteractionBase : " + sInheritanceInterfaceList);
swBaseClass.WriteLine("\t{");
// Member declaration
swBaseClass.WriteLine("\t\t#region Class Member Declarations");
swBaseClass.WriteLine("\t\t\tprotected\tSqlConnection\t\t\t" + PrefixMemberVar("MainConnection", "sco") + ";");
if(m_bSPIncludeErrorCodeSupport)
{
swBaseClass.WriteLine("\t\t\tprotected\tSqlInt32\t\t\t\t" + PrefixMemberVar("ErrorCode", "i") + ";");
}
if(m_bNETIncludeConnectionProviderSupport)
{
swBaseClass.WriteLine("\t\t\tprotected\tbool\t\t\t\t\t" + PrefixMemberVar("MainConnectionIsCreatedLocal", "b") + ";");
swBaseClass.WriteLine("\t\t\tprotected\t" + m_sNETClassPrefix + "ConnectionProvider\t" + PrefixMemberVar("MainConnectionProvider", "cp") + ";");
}
if(m_iNETConnectionStringRetrieval != (int)eConnectionStringRetrieval.AppConfig)
{
swBaseClass.WriteLine("\t\t\tprivate\t\tstring\t\t\t\t\t" + PrefixMemberVar("ConnectionString","s") + ";");
}
swBaseClass.WriteLine("\t\t\tprivate\t\tbool\t\t\t\t\t" + PrefixMemberVar("IsDisposed","b") + ";");
swBaseClass.WriteLine("\t\t#endregion");
swBaseClass.WriteLine(Environment.NewLine);
// When COMPlus support is selected, emit an Activate() / Deactivate() method pair, otherwise
// emit a constructor.
if(m_bNETIncludeCOMPlusSupport)
{
// ::Activate()
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t\t/// <summary>");
swBaseClass.WriteLine("\t\t/// Purpose: Activation override. Will be called by COM+ when object is created or selected from a pool.");
swBaseClass.WriteLine("\t\t/// </summary>");
}
swBaseClass.WriteLine("\t\toverride protected void Activate()");
swBaseClass.WriteLine("\t\t{");
swBaseClass.WriteLine("\t\t\t// Initialize the class' members.");
swBaseClass.WriteLine("\t\t\tInitClass();");
if(m_iNETConnectionStringRetrieval != (int)eConnectionStringRetrieval.AppConfig)
{
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("MainConnection", "sco") + ".ConnectionString = " +
PrefixMemberVar("ConnectionString", "s") + ";");
}
swBaseClass.WriteLine("\t\t}");
swBaseClass.WriteLine(Environment.NewLine);
// ::Deactivate()
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t\t/// <summary>");
swBaseClass.WriteLine("\t\t/// Purpose: De-activation override. Will be called by COM+ when the object is about to be deactivated.");
swBaseClass.WriteLine("\t\t/// </summary>");
}
swBaseClass.WriteLine("\t\toverride protected void Deactivate()");
swBaseClass.WriteLine("\t\t{");
swBaseClass.WriteLine("\t\t\t// Destruct membervariables with resources.");
swBaseClass.WriteLine("\t\t\tif(" + PrefixMemberVar("MainConnection", "sco") + " != null)");
swBaseClass.WriteLine("\t\t\t{");
if(m_bNETIncludeConnectionProviderSupport)
{
swBaseClass.WriteLine("\t\t\t\tif(" + PrefixMemberVar("MainConnectionIsCreatedLocal","b") + ")");
swBaseClass.WriteLine("\t\t\t\t{");
swBaseClass.WriteLine("\t\t\t\t\t// Object is created in this class, so destroy it here.");
swBaseClass.WriteLine("\t\t\t\t\t" + PrefixMemberVar("MainConnection", "sco") + ".Close();");
swBaseClass.WriteLine("\t\t\t\t\t" + PrefixMemberVar("MainConnection", "sco") + ".Dispose();");
swBaseClass.WriteLine("\t\t\t\t\t" + PrefixMemberVar("MainConnectionIsCreatedLocal","b") + " = false;");
swBaseClass.WriteLine("\t\t\t\t}");
}
else
{
swBaseClass.WriteLine("\t\t\t\t" + PrefixMemberVar("MainConnection", "sco") + ".Dispose();");
}
swBaseClass.WriteLine("\t\t\t\t" + PrefixMemberVar("MainConnection", "sco") + " = null;");
swBaseClass.WriteLine("\t\t\t}");
swBaseClass.WriteLine("\t\t}");
swBaseClass.WriteLine(Environment.NewLine);
// CanBePooled
if(m_bNETIncludeObjectPoolingSupport)
{
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t\t/// <summary>");
swBaseClass.WriteLine("\t\t/// Purpose: CanBePooled override. Will be called by COM+ when the object is about to be put back in the pool.");
swBaseClass.WriteLine("\t\t/// </summary>");
}
swBaseClass.WriteLine("\t\toverride protected bool CanBePooled()");
swBaseClass.WriteLine("\t\t{");
swBaseClass.WriteLine("\t\t\treturn true;");
swBaseClass.WriteLine("\t\t}");
swBaseClass.WriteLine(Environment.NewLine);
}
}
else
{
// ::ctor()
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t\t/// <summary>");
swBaseClass.WriteLine("\t\t/// Purpose: Class constructor.");
swBaseClass.WriteLine("\t\t/// </summary>");
}
swBaseClass.WriteLine("\t\tpublic " + m_sNETClassPrefix + "DBInteractionBase()");
swBaseClass.WriteLine("\t\t{");
swBaseClass.WriteLine("\t\t\t// Initialize the class' members.");
swBaseClass.WriteLine("\t\t\tInitClass();");
swBaseClass.WriteLine("\t\t}");
swBaseClass.WriteLine(Environment.NewLine);
}
// ::InitClass()
if(m_bNETIncludeComments)
{
swBaseClass.WriteLine("\t\t/// <summary>");
swBaseClass.WriteLine("\t\t/// Purpose: Initializes class members.");
swBaseClass.WriteLine("\t\t/// </summary>");
}
swBaseClass.WriteLine("\t\tprivate void InitClass()");
swBaseClass.WriteLine("\t\t{");
swBaseClass.WriteLine("\t\t\t// create all the objects and initialize other members.");
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("MainConnection", "sco") + " = new SqlConnection();");
if(m_bNETIncludeConnectionProviderSupport)
{
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("MainConnectionIsCreatedLocal","b") + " = true;");
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("MainConnectionProvider","cp") + " = null;");
}
if(m_iNETConnectionStringRetrieval == (int)eConnectionStringRetrieval.AppConfig)
{
// emit code to retrieve the connectionstring from the app.config file.
swBaseClass.WriteLine("\t\t\tAppSettingsReader " + PrefixMemberVar("ConfigReader", "asr") + " = new AppSettingsReader();");
swBaseClass.WriteLine(Environment.NewLine + "\t\t\t// Set connection string of the sqlconnection object");
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("MainConnection", "sco") + ".ConnectionString = ");
swBaseClass.WriteLine("\t\t\t\t\t\t" + PrefixMemberVar("ConfigReader", "asr") + ".GetValue(\"Main.ConnectionString\", typeof(string)).ToString();");
}
if(m_bSPIncludeErrorCodeSupport)
{
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("ErrorCode", "i") + " = (int)LLBLError.AllOk;");
}
swBaseClass.WriteLine("\t\t\t" + PrefixMemberVar("IsDisposed","b") + " = false;");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -