Fluent NHibernate - 映射错误、XML 验证、配置无效/不完整

发布于 2024-11-29 14:51:48 字数 1225 浏览 2 评论 0原文

我对 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文