2

全てにおいて良い日。

私はエンティティまたは複雑なタイプに遭遇できませんこのタイプのエラーに遭遇したのはこれが初めてです誰か助けてください

    public IEnumerable<APPLICANT> GetApplicant()
    { 
        IEnumerable<APPLICANT> applicantdata = Cache.Get("applicants") as IEnumerable<APPLICANT>;

        IEnumerable<Profile> profiledata = Cache.Get("profiles") as IEnumerable<Profile>;




        if (applicantdata == null)
        {

            var applicantList = (from a in context.Profiles
                                 join app in context.APPLICANTs 
                                 on a.PROFILE_ID equals app.Profile_id
                                where app.APPLICANT_LogicalDelete == false
                                select new APPLICANT()
                                 {
               APPLICANT_LastName = a.Applicant_LASTNAME,
               APPLICANT_FirstName = a.Applicant_FIRSTNAME,
               APPLICANT_MiddleName = a.Applicant_MIDDLENAME,
               APPLICANT_Address = a.Applicant_ADDRESS,
               APPLICANT_City = a.Applicant_CITY,
               APPLICANT_Phone = a.Applicant_PHONE,
                APPLICANT_Email= a.Applicant_EMAIL
           });

            applicantdata = applicantList.Where(v => !String.IsNullOrEmpty(v.APPLICANT_LastName)).OrderBy(v => v.APPLICANT_ID).ToList();

            if (applicantdata.Any())    
            {
                Cache.Set("applicants", applicantdata, 30);
            }
        }
        return applicantdata.ToList().Take(1000);

    }

そして、これはエラーが発生した行です ありがとう!

applicantdata = applicantList.Where(v => !String.IsNullOrEmpty(v.APPLICANT_LastName)).OrderBy(v => v.APPLICANT_ID).ToList();

上記の行のエラーは

System.NotSupportedException: エンティティまたは複合型 'Model.APPLICANT' は、LINQ to Entities クエリで構築できません。

4

2 に答える 2

2
select new APPLICANT()

Entity Framework はこれをサポートしていません。クエリが作成されたときではなく、クエリが使用されたときに診断されるため、例外を取得する行がわかりにくくなっています。

匿名型を含め、データベース エンティティではない任意の型を作成できるため、次のことができます。

select new
{
    a.Applicant_LASTNAME,
    a.Applicant_FIRSTNAME,
    a.Applicant_MIDDLENAME,
    a.Applicant_ADDRESS,
    a.Applicant_CITY,
    a.Applicant_PHONE,
    a.Applicant_EMAIL
}

また、必要に応じて、APPLICANTクエリの実行が終了した後で、これらの値をオブジェクトに戻すことができます。

または、必要に応じて、次のことをAPPLICANT直接行うことができます。

select app

Applicant_LASTNAMEの両方に etc. がある理由がわかりません。また、値が同じかどうかもわかりません。そうでない場合、この最後の提案は役に立ちません。ProfileAPPLICANT

于 2013-05-10T08:12:05.163 に答える