执行Any / All功能时出错

时间:2015-05-28 18:43:16

标签: c# linq-to-sql wcf-data-services

大家好日子,最近迁移到WCF数据服务的更新版本,但在测试时无法运行Any / All函数,总是会收到此错误:

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="es-MX">An error occurred while processing this request.</m:message><m:innererror><m:message>Los tipos de argumentos no coinciden</m:message><m:type>System.ArgumentException</m:type><m:stacktrace>   en System.Linq.Expressions.Expression.Condition(Expression test, Expression ifTrue, Expression ifFalse)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitConditional(ConditionalExpression c)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitMethodCall(MethodCallExpression m)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitLambda(LambdaExpression lambda)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitUnary(UnaryExpression u)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.VisitMethodCall(MethodCallExpression m)&#xD;
   en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)&#xD;
   en System.Data.Linq.SqlClient.Funcletizer.Funcletize(Expression expression)&#xD;
   en System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)&#xD;
   en System.Data.Linq.DataQuery`1.System.Collections.IEnumerable.GetEnumerator()&#xD;
   en System.Data.Services.WebUtil.GetRequestEnumerator(IEnumerable enumerable)&#xD;
   en System.Data.Services.QueryResultInfo.MoveNext()&#xD;
   en System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)&#xD;
   en System.Data.Services.DataService`1.HandleRequest()</m:stacktrace></m:innererror></m:error>

我想要运行的查询如下:

from e in _ctx.Entity
where e.RelationshipList.Any(a => a.Property.Contains("fel"))
select e

实体:

    public partial class GenMunicipio
    {
        // Colocar el código personalizado aquí.
        internal class Metadata
        {
            // ADVERTENCIA: Sólo los "Atributos" dentro de esta clase serán preservados.
            public System.Guid ID { get; set; }
            public System.Guid? ZonaID { get; set; }
            [Required]
            public string Clave { get; set; }
            [Required]
            public string Concepto { get; set; }
            public bool Inactivo { get; set; }
            public string Abreviatura { get; set; }
            public System.Guid? EstadoID { get; set; }
            public GenZona ZonaGenZona { get; set; }
            public GenEstado EstadoGenEstado { get; set; }
            public EntitySet<GenLocalidad> MunicipioGenLocalidadList { get; set; }
            public EntitySet<GenPersona> MunicipioNacimientoGenPersonaList { get; set; }
        }
        #endregion
    }

关于孩子的关系:

        [System.Data.Linq.Mapping.Association(Name = "GenMunicipio_GenLocalidad", Storage = "_municipioGenMunicipio", ThisKey = "MunicipioID", OtherKey = "ID", IsForeignKey = true)]
        [System.Runtime.Serialization.DataMember(Order = 9, EmitDefaultValue = false)]
        public GenMunicipio MunicipioGenMunicipio
        {
            get { return (serializing && !_municipioGenMunicipio.HasLoadedOrAssignedValue) ? null : _municipioGenMunicipio.Entity; }
            set
            {
                GenMunicipio previousValue = _municipioGenMunicipio.Entity;
                if (previousValue != value || _municipioGenMunicipio.HasLoadedOrAssignedValue == false)
                {
                    OnMunicipioGenMunicipioChanging(value);
                    SendPropertyChanging("MunicipioGenMunicipio");
                    if (previousValue != null)
                    {
                        _municipioGenMunicipio.Entity = null;
                        previousValue.MunicipioGenLocalidadList.Remove(this);
                    }
                    _municipioGenMunicipio.Entity = value;
                    if (value != null)
                    {
                        value.MunicipioGenLocalidadList.Add(this);
                        _municipioID = value.ID;
                    }
                    else
                    {
                        _municipioID = default(System.Guid);
                    }
                    SendPropertyChanged("MunicipioGenMunicipio");
                    OnMunicipioGenMunicipioChanged();
                }
            }
        }

我的比较是在string类型的属性之间,现在问题是导航到另一个关系。

任何(a =&gt; a.MunicipioGenMunicipio.Concepto(“fel”))&lt; - this Works

任何(a =&gt; a.MunicipioGenMunicipio.EstadoGenEstado.Concepto.Contains(“fel”))&lt; - 此抛出错误。

0 个答案:

没有答案