大家好日子,最近迁移到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)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitConditional(ConditionalExpression c)
en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitMethodCall(MethodCallExpression m)
en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitLambda(LambdaExpression lambda)
en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitUnary(UnaryExpression u)
en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitExpressionList(ReadOnlyCollection`1 original)
en System.Data.Linq.SqlClient.ExpressionVisitor.VisitMethodCall(MethodCallExpression m)
en System.Data.Linq.SqlClient.ExpressionVisitor.Visit(Expression exp)
en System.Data.Linq.SqlClient.Funcletizer.Funcletize(Expression expression)
en System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
en System.Data.Linq.DataQuery`1.System.Collections.IEnumerable.GetEnumerator()
en System.Data.Services.WebUtil.GetRequestEnumerator(IEnumerable enumerable)
en System.Data.Services.QueryResultInfo.MoveNext()
en System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)
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; - 此抛出错误。