LINQ

2011-10-11 5 views
2

나는 목록을 엔티티 타입 반환 편안한 서비스를 만들 수 있습니다LINQ

[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(); 
    } 

// I를 선택한 열을 가져 오는 중입니다. 하지만 작동하지 않습니다. 나 자신의 클래스를 생성해야합니까 아니면 Entity Framework로 구현할 수 있습니까?

오류 : 서버에서 요청을 처리하는 동안 오류가 발생했습니다. 예외 메시지는 '엔터티 또는 복합 유형'GharbarIndia.Data.RealUser '를 LINQ to Entities 쿼리에서 생성 할 수 없습니다.' 자세한 내용은 서버 로그를 참조하십시오. 예외 스택 추적은 다음과 같습니다 시스템에서 System.Data.Objects.ELinq.ExpressionConverter.MemberInitTranslator.TypedTranslate에서 System.Data.Objects.ELinq.ExpressionConverter.CheckInitializerType (종류 형) (ExpressionConverter 부모, MemberInitExpression의 LINQ)에서

. Data.Objects.ELinq.ExpressionConverter.TypedTranslator 1.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.TypedTranslator System.Data.Objects.ELinq.ExpressionConverter.Convert()의 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression (표현식 linq)에서 1.Translate (ExpressionConverter 부모, 식 linq) System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan (Nullable 1 forMergeOption) at System.Data.Objects.ObjectQuery) 1.GetResults (Nullable 1 forMergeOption) at System.Data.Objects.ObjectQuery System.Collections.Generic.List의 1.System.Collections.Generic.IEnumerable.GetEnumerator (컬렉션 1..ctor(IEnumerable 컬렉션) System.Linq 목록에. [TSour GharbarIndia.ServiceCore.RealAgent.GetAll()에서 GharbarIndia.Data.User.UserManager.Agents()의 E : \ Gharbarindia \ Dev \ GharbarIndia.Data \ User \ UserManager.cs : 179 줄에 IE (IEnumerable`1 소스) Gharbarindia \ Dev \ GharbarIndia.ServiceCore \ RealAgent.cs : System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke (Object instance, Object [] inputs)의 SyncInvokeGetAll (Object, Object [], Object []) 개체 []에 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5에서 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc & RPC) (MessageRpc & RPC) (MessageRpc & & RPC에서 출력))에서 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 (MessageRpc & rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRu ntime.ProcessMessage31 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11에서 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2에서 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3에서 (MessageRpc & RPC) (MessageRpc & RPC) (MessageRpc & RPC) (MessageRpc System.ServiceModel.Dispatcher.MessageRpc.Process에서 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc & RPC) (부울 isOperationContextSet)

+0

FYI : http://entityframework.codeplex.com/workitem/875 – jessehouwing

답변

0

에서 & RPC는) 당신은 개체에 투사 할 수 없습니다. 선택해야하는 필드 만 포함하는 새 클래스를 만들어보십시오.

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

감사합니다. 다시 새로운 수업을 만드는 것이 정말 고통 스럽습니다. – Parwej