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; } }
/// <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(); } }
/// <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)); }