protected override void PostProcessMappings(NHibernate.Cfg.Configuration config)
        {
            NHibernate.Mapping.Attributes.HbmSerializer.Default.Validate = true;
            var serializer = new NHibernate.Mapping.Attributes.HbmSerializer();

            if (EntityAssemblyNames == null || !EntityAssemblyNames.Any()) return;
            foreach (var modelAssemblyName in EntityAssemblyNames)
            {
                try
                {
                    var assembly = Assembly.Load(modelAssemblyName);
                    config.AddInputStream(serializer.Serialize(assembly));
                }
                catch (Exception e)
                {
                    throw new Exception("程序集映射失败,请检查EntityAssemblyNames节点配置.", e);
                }
            }
        }
		private bool AddedMappingFromHbmResource(ItemDefinition definition, NHibernate.Cfg.Configuration cfg)
		{
			if (!TryLocatingHbmResources)
				return false;

			Stream hbmXmlStream = definition.ItemType.Assembly.GetManifestResourceStream(definition.ItemType.FullName + ".hbm.xml");
			if (hbmXmlStream == null)
				return false;

			using (hbmXmlStream)
			{
				cfg.AddInputStream(hbmXmlStream);
				return true;
			}
		}
Пример #3
0
        /// <summary>
        /// 读入Attribute到内存
        /// </summary>
        /// <param name="cfg"></param>
        /// <param name="assembly">要读入的AssemblyName</param>
        public static void MemorizeMappingAttribute(NHibernate.Cfg.Configuration cfg, Assembly assembly)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException("assembly");
            }

            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            HbmSerializer.Default.Validate = true;

            HbmSerializer.Default.HbmAssembly = assembly.GetName().Name;
            HbmSerializer.Default.HbmNamespace = assembly.GetTypes()[0].Namespace;

            // Here, we serialize all decorated classes (but you can also do it class by class)
            HbmSerializer.Default.Serialize(stream, assembly);
            // System.Reflection.Assembly.GetExecutingAssembly()

            stream.Position = 0; // Rewind

            //using (System.IO.FileStream sw = new FileStream("c:\\test.xml", FileMode.Create))
            //{
            //    stream.WriteTo(sw);
            //}

            cfg.AddInputStream(stream); // Use the stream here

            stream.Dispose();
        }
        private static void AddInputStreamsForAssembly(NHibernate.Cfg.Configuration _configuration, Assembly asm)
        {
            Type[] types = GetTypesWithClassAttribute(asm);
            foreach (Type t in types)
            {
                HbmSerializer.Default.HbmAssembly = asm.GetName().Name;
                HbmSerializer.Default.HbmNamespace = t.Namespace;
                // Use NHibernate.Mapping.Attributes to create information about our entities
                HbmSerializer.Default.Validate = true; // Enable validation (optional)

                System.IO.MemoryStream stream = new System.IO.MemoryStream();
                Console.WriteLine(t.Name);
                HbmSerializer.Default.Serialize(stream, t);
                stream.Position = 0;
                Console.WriteLine((new StreamReader(stream)).ReadToEnd());
                Console.WriteLine();
                stream.Position = 0;
                //DumpHbmXmlStreamToFile(stream, Path.Combine(appPath, hbmXmlDumpFile));
                //stream.Position = 0;
                _configuration.AddInputStream(stream);
                stream.Close();
            }
        }
Пример #5
0
 /// <summary>Adds mappings to the configuration.</summary>
 /// <param name="cfg">The configuration to add the mappings to.</param>
 protected virtual void AddMapping(NHibernate.Cfg.Configuration cfg, string name)
 {
     if (!string.IsNullOrEmpty(name))
         cfg.AddInputStream(GetType().Assembly.GetManifestResourceStream(name));
 }