Nhibernate Sharp架构映射了多对多和ado.net数据服务:预期结果为单个资源,但找到了多个资源

Nhibernate Sharp架构映射了多对多和ado.net数据服务:预期结果为单个资源,但找到了多个资源,nhibernate,exception,fluent-nhibernate,wcf-data-services,s#arp-architecture,Nhibernate,Exception,Fluent Nhibernate,Wcf Data Services,S#arp Architecture,我正在开发一个应用程序,通过ADO.NET数据服务从使用nHibernate和sarp体系结构的遗留数据库迁移的SQL server数据库中读取数据。我正在尝试映射多对多关系。我有一个错误类: public class Error { public virtual int ERROR_ID { get; set; } public virtual string ERROR_CODE { get; set; } public virtual string DESCRIPTI

我正在开发一个应用程序,通过ADO.NET数据服务从使用nHibernate和sarp体系结构的遗留数据库迁移的SQL server数据库中读取数据。我正在尝试映射多对多关系。我有一个错误类:

public class Error
{
    public virtual int ERROR_ID { get; set; }
    public virtual string ERROR_CODE { get; set; }
    public virtual string DESCRIPTION { get; set; }

    public virtual IList<ErrorGroup> GROUPS { get; protected set; }
}
我查看源代码,然后获取数据。但是,它有一个例外:

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">An error occurred while processing this request.</message>
  <innererror xmlns="xmlns">
    <message>A single resource was expected for the result, but multiple resources were found.</message>

    <type>System.InvalidOperationException</type>
    <stacktrace>   at System.Data.Services.Serializers.Serializer.WriteRequest(IEnumerator queryResults, Boolean hasMoved)&#xD;
   at System.Data.Services.ResponseBodyWriter.Write(Stream stream)</stacktrace>
  </innererror>
</error>

A我错过了什么???这个错误是从哪里来的?

hrm。。。不熟悉这个错误,但我想知道它是否与延迟加载有关。当前映射将导致在访问子集合时查询它,这可能会导致序列化崩溃。序列化NHibernate代理对象是充满巫毒的屁股上的巨大痛苦。尝试像下面的示例那样更改映射,看看它是否允许继续

public class ErrorOverride : IAutoMappingOverride<Error>
{
    public void Override(AutoMapping<Error> mapping)
    {
        mapping.Table("ERROR");
        mapping.Id(x => x.ERROR_ID, "ERROR_ID");
        mapping.IgnoreProperty(x => x.Id);
        mapping.HasManyToMany<ErrorGroup>(x => x.GROUPS)
            .Table("ERROR_GROUP_LINK")
            .ParentKeyColumn("ERROR_ID")
            .ChildKeyColumn("ERROR_GROUP_ID").Not.Lazy().AsBag();
    }
}

我认为这是由于linq和nHibernate的一个错误,在我限制结果只返回一个结果后工作

The XML page cannot be displayed 
Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later. 
--------------------------------------------------------------------------------
Only one top level element is allowed in an XML document. Error processing resource 'http://localhost:1905/DataServic...
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
-^
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">An error occurred while processing this request.</message>
  <innererror xmlns="xmlns">
    <message>A single resource was expected for the result, but multiple resources were found.</message>

    <type>System.InvalidOperationException</type>
    <stacktrace>   at System.Data.Services.Serializers.Serializer.WriteRequest(IEnumerator queryResults, Boolean hasMoved)&#xD;
   at System.Data.Services.ResponseBodyWriter.Write(Stream stream)</stacktrace>
  </innererror>
</error>
public class ErrorOverride : IAutoMappingOverride<Error>
{
    public void Override(AutoMapping<Error> mapping)
    {
        mapping.Table("ERROR");
        mapping.Id(x => x.ERROR_ID, "ERROR_ID");
        mapping.IgnoreProperty(x => x.Id);
        mapping.HasManyToMany<ErrorGroup>(x => x.GROUPS)
            .Table("ERROR_GROUP_LINK")
            .ParentKeyColumn("ERROR_ID")
            .ChildKeyColumn("ERROR_GROUP_ID").Not.Lazy().AsBag();
    }
}