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

📄 auxiliarydatabaseobjectfactory.cs

📁 NHibernate NET开发者所需的
💻 CS
字号:
using System;
using System.Collections.Generic;
using NHibernate.Cfg.MappingSchema;
using NHibernate.Mapping;
using NHibernate.Util;

namespace NHibernate.Cfg.XmlHbmBinding
{
	internal class AuxiliaryDatabaseObjectFactory
	{
		public static IAuxiliaryDatabaseObject Create(Mappings mappings, HbmDatabaseObject databaseObjectSchema)
		{
			return databaseObjectSchema.HasDefinition()
							? CreateCustomObject(mappings, databaseObjectSchema)
							: CreateSimpleObject(databaseObjectSchema);
		}

		private static IAuxiliaryDatabaseObject CreateSimpleObject(HbmDatabaseObject databaseObjectSchema)
		{
			string createText = databaseObjectSchema.FindCreateText();
			string dropText = databaseObjectSchema.FindDropText();

			IAuxiliaryDatabaseObject simpleObject = new SimpleAuxiliaryDatabaseObject(createText, dropText);

			foreach (string dialectName in databaseObjectSchema.FindDialectScopeNames())
			{
				simpleObject.AddDialectScope(dialectName);
			}

			return simpleObject;
		}

		private static IAuxiliaryDatabaseObject CreateCustomObject(Mappings mappings, HbmDatabaseObject databaseObjectSchema)
		{
			HbmDefinition definitionSchema = databaseObjectSchema.FindDefinition();
			string customTypeName = definitionSchema.@class;

			try
			{
				string className =
					TypeNameParser.Parse(customTypeName, mappings.DefaultNamespace, mappings.DefaultAssembly).ToString();
				System.Type customType = ReflectHelper.ClassForName(className);

				IAuxiliaryDatabaseObject customObject = (IAuxiliaryDatabaseObject)Activator.CreateInstance(customType);

				Dictionary<string, string> parameters = definitionSchema.FindParameters();
				customObject.SetParameterValues(parameters);
				foreach (string dialectName in databaseObjectSchema.FindDialectScopeNames())
				{
					customObject.AddDialectScope(dialectName);
				}

				return customObject;
			}
			catch (TypeLoadException exception)
			{
				throw new MappingException(string.Format("Could not locate custom database object class [{0}].", customTypeName),
																	 exception);
			}
			catch (Exception exception)
			{
				throw new MappingException(
					string.Format("Could not instantiate custom database object class [{0}].", customTypeName), exception);
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -