i want to create my Xml Mapping Files in different directories. So i added a Extended Property to Class:
Then i add a folder name to this Property:
Then i modified the NHibernate template:
Code: Select all
<#@ extended name="XmlMappingDir" owner="Class" type="System.String" description="Output directory for the mapping of this class." #>
Code: Select all
if (XmlMappingAction != MetadataArtifactProcessing.DoNotGenerateMappingFiles) {
output.Extension = ".hbm.xml";
if (!XmlMappingFilePerClass) {
if (XmlMappingAction == MetadataArtifactProcessing.CopyToOutputDirectory)
output.PushOutputRedirection(XmlMappingOutput, model.FileName, BuildAction.None, CopyToOutputDirectory.CopyAlways);
else
output.PushOutputRedirection(XmlMappingOutput, model.FileName, BuildAction.EmbeddedResource, CopyToOutputDirectory.DoNotCopy);
#>
<#= ((EntityDeveloper.NHibernate.Serialization.HibernateModelSerializer)model.GetModelSerializer()).GetXmlMappingText(true) #><#
output.PopOutputRedirection();
}
else {
foreach(HibernateClass cls in model.Classes) {
string xmlMappingDir = cls.GetProperty("XmlMappingDir") as string;
if (string.IsNullOrEmpty(xmlMappingDir))
xmlMappingDir = @"E:\GeneralMappings";
XmlMappingOutput.DestinationFolder = xmlMappingDir;
string rootFileName = ModelNameAsFilesPrefix ? baseFileName + "." + cls.Name : cls.Name;
if (XmlMappingAction == MetadataArtifactProcessing.CopyToOutputDirectory)
output.PushOutputRedirection(XmlMappingOutput, rootFileName, BuildAction.None, CopyToOutputDirectory.CopyAlways);
else
output.PushOutputRedirection(XmlMappingOutput, rootFileName, BuildAction.EmbeddedResource, CopyToOutputDirectory.DoNotCopy);
#>
<#= ((EntityDeveloper.NHibernate.Serialization.HibernateModelSerializer)model.GetModelSerializer()).GetClassXmlMappingText(cls) #><#
output.PopOutputRedirection();
}
// save additional model mappings (filters and methods)
if (model.Filters.Count > 0 || model.TypeDefs.Count > 0 || model.Methods.Count > 0) {
if (XmlMappingAction == MetadataArtifactProcessing.CopyToOutputDirectory)
output.PushOutputRedirection(XmlMappingOutput, model.FileName, BuildAction.None, CopyToOutputDirectory.CopyAlways);
else
output.PushOutputRedirection(XmlMappingOutput, model.FileName, BuildAction.EmbeddedResource, CopyToOutputDirectory.DoNotCopy);
#>
<#= ((EntityDeveloper.NHibernate.Serialization.HibernateModelSerializer)model.GetModelSerializer()).GetXmlMappingText(false) #><#
output.PopOutputRedirection();
}
}
}
What did i overlook? Where is my mistake?
Greetings