Fluent NHibernate - 映射错误、XML 验证、配置无效/不完整
我对 NH 和 FNH 还很陌生。我想映射一个长整型列表,但收到错误:
创建 SessionFactory 时使用了无效或不完整的配置。
双内部异常:
{"(XmlDocument)(15,8):XML 验证错误:命名空间 'urn:nhibernate-mapping-2.2' 中的元素 'list' 在命名空间 'urn:nhibernate-mapping-2.2' 中具有无效的子元素 'one-to-many': nhibernate-mapping-2.2'。预期可能的元素列表:'loader、sql-insert、sql-update、sql-delete、 sql-delete-all,命名空间“urn:nhibernate-mapping-2.2”中的过滤器。"}
我的实体:
public class XPTable
{
public virtual int I3D { get; set; }
public virtual IList<long> XPRequired { get; set; }
public XPTable()
{
XPRequired = new List<long>();
}
}
我的映射:
public class XPTableMaps : ClassMap<XPTable>
{
public XPTableMaps()
{
Table("XPTable");
Id(id => id.I3D);
//this line causes the error
HasMany<long>(many => many.XPRequired).AsList().Element("XPRequired");
}
}
我使用 NHibernate 3.1.0,FNH 1.0
这绝对是 HasMany 映射导致了问题,因为当我将其注释掉时,程序运行得很好。 SQL 2008 表中的 I3D 列是标识,表的名称/类型和列与映射匹配。如果我省略 .AsList(),则错误消息将保持不变,只是它引用的是“bag”而不是“list”。添加 Inverse() 和/或 Cascade.Whatever() 也没有效果。
有什么想法吗?
I'm fairly new to NH and FNH. I want to map a List of longs, and I'm getting the error:
An invalid or incomplete configuration was used while creating a SessionFactory.
Double inner Exception:
{"(XmlDocument)(15,8): XML validation error: The element 'list' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'one-to-many' in Namespace 'urn:nhibernate-mapping-2.2'. List of possible elements expected: 'loader, sql-insert, sql-update, sql-delete, sql-delete-all, filter' in Namespace 'urn:nhibernate-mapping-2.2'."}
My entity:
public class XPTable
{
public virtual int I3D { get; set; }
public virtual IList<long> XPRequired { get; set; }
public XPTable()
{
XPRequired = new List<long>();
}
}
My Mapping:
public class XPTableMaps : ClassMap<XPTable>
{
public XPTableMaps()
{
Table("XPTable");
Id(id => id.I3D);
//this line causes the error
HasMany<long>(many => many.XPRequired).AsList().Element("XPRequired");
}
}
I use NHibernate 3.1.0, FNH 1.0
It's definitely the HasMany mapping that's causing the problem, because when I comment it out, the program runs just fine. The I3D column in the SQL 2008 table is the identity, the names/types of the table and the columns match the mapping. If I leave out the .AsList(), then the error message stays the same except that it refers to 'bag' instead of 'list'. Adding Inverse() and/or Cascade.Whatever() has no effect either.
Any ideas please?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论