⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clsllblgenerator.cs

📁 LLBLGen 1.21 Sourcecode
💻 CS
📖 第 1 页 / 共 5 页
字号:
		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 + -