我创建了一个restful服务,它返回一个列表和一个实体类型:
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class RealAgent : IRealAgent 
{
    public IList<RealUser> GetAll()
    {
        return UserManager.Agents();
    }
    }//用户管理器类实现
    public static List<RealUser> Agents()
    {
        var q = from x in DBContextHelper.DBContext.RealUsers
                orderby x.CreatedOn descending
                select new RealUser()
                        {
                                            FirstName = x.FirstName,
                                            LastName =x.LastName,
                                            AboutProfession = x.AboutProfession
                        };
        return q.ToList();
    }//我正在获取选定的列。但它不起作用。我是否需要创建自己的类,或者可以使用Entity Framework实现?
错误:服务器在处理请求时遇到错误。异常消息是“无法在LINQ to Entities查询中构造实体或复杂类型”GharbarIndia.Data.RealUser“。”有关更多详细信息,请参阅服务器日志。异常堆栈跟踪为:
在System.Data.Objects.ELinq.ExpressionConverter.CheckInitializerType(Type类型)在System.Data.Objects.ELinq.ExpressionConverter.MemberInitTranslator.TypedTranslate(ExpressionConverter父节点,在System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter parent, Expression linq) at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input) at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding) at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator1.Translate(ExpressionConverter父节点的MemberInitExpression linq),Expression linq) at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) at System.Data.Objects.ELinq.ExpressionConverter.Convert() at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery1.GetResults(Nullable1 forMergeOption) at System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable.GetEnumerator() at System.Collections.Generic.List1..ctor(IEnumerable1集合) at System.Linq.Enumerable.ToListTSource at GharbarIndia.Data.User.UserManager.Agents() in E:\Gharbarindia\Dev\GharbarIndia.Data\User\UserManager.cs:line179在E:\Gharbarindia\Dev\GharbarIndia.ServiceCore\RealAgent.cs:line 16中的GharbarIndia.ServiceCore.RealAgent.GetAll()在SyncInvokeGetAll(Object,System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object实例上的Object[]、Object[] )、Object[]输入在System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&远程过程调用)在System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& ProcessMessage11(MessageRpc& rpc)
发布于 2011-10-11 22:06:46
不能投影到实体上。尝试创建一个仅包含需要选择的字段的新类。
public class MyRealUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string AboutProfession { get; set; }
}
var q = from x in DBContextHelper.DBContext.RealUsers
    orderby x.CreatedOn descending
    select new MyRealUser()
    {
        FirstName = x.FirstName,
        LastName =x.LastName,
        AboutProfession = x.AboutProfession
    };https://stackoverflow.com/questions/7726928
复制相似问题