首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >list风格的服务中包含选定列的linq to sql列表

list风格的服务中包含选定列的linq to sql列表
EN

Stack Overflow用户
提问于 2011-10-11 21:36:14
回答 1查看 365关注 0票数 2

我创建了一个restful服务,它返回一个列表和一个实体类型:

代码语言:javascript
运行
复制
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class RealAgent : IRealAgent 
{
    public IList<RealUser> GetAll()
    {
        return UserManager.Agents();
    }
    }

//用户管理器类实现

代码语言:javascript
运行
复制
    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)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-11 22:06:46

不能投影到实体上。尝试创建一个仅包含需要选择的字段的新类。

代码语言:javascript
运行
复制
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
    };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7726928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档