我正在创建一个动态xml映射文件并提供给Nhibernate,因为它用于动态对象创建,最后保存在工作项目中的bin \ debug文件夹中。我在创建动态映射xml文件之后尝试配置这些文件将xml文件导入Nhibernate我收到编译错误,因为* “doc xmlns不是预期的”。如果我从bin文件夹移动到* \ bin \ Debug 文件夹,那么它就会成功编译并获得“此EntityObject.hbm.xml没有持久性”文件。
我的xml映射看起来像我的bin文件夹中的“Entityobject.hbm.xml”名称
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Dal" namespace="Dal">
<class name="Dal.DynamicAttributesDao,Dal" table="MM_AttributeRecord_2_V1" entity-name="AttributeRecord2" lazy="true">
<id name="Id" column="Id">
<generator class="assigned" />
</id>
<dynamic-component name="Attributes">
<property type="string" not-null="true" name="Filename" column="Attr_5" />
<property type="string" not-null="true" name="Size" column="Attr_6" />
<property type="string" not-null="true" name="Type" column="Attr_7" />
<property type="string" not-null="true" name="Addedby" column="Attr_8" />
<property type="string" not-null="true" name="Approvalstatus" column="Attr_9" />
<property type="string" not-null="true" name="Url" column="Attr_10" />
<property type="string" not-null="true" name="Round" column="Attr_11" />
</dynamic-component>
</class>
</hibernate-mapping>
我的“DynamicAttributeDao”上面的通过使用 IDictionary属性和我的代码结构(如
)来保存所有动态属性 public Class DynamicAttributesDao : BaseEntity
{
int Id ;
IDictionary Attributes ;
}
之后我将所有.hbm.xml文件配置为Nhibernate并编写代码
string mappingfilesPath = AppDomain.CurrentDomain.BaseDirectory;
mappingfilesPath = mappingfilesPath + "bin\\";
foreach (string file in Directory.EnumerateFiles(mappingfilesPath, "*.xml"))
{
// string contents = File.ReadAllText(file);
XmlDocument loadxml = new XmlDocument();
loadxml.Load(file);
var xmlfilename = file.Substring(file.LastIndexOf("\\"));
new NHibernate.Cfg.Configuration()
.AddDocument(loadxml).BuildSessionFactory();
loadxml.Save(mappingfilesPath + xmlfilename);
}
我该如何解决这个问题?