祝大家有美好的一天。
我无法拥有实体或复杂类型
这是我第一次遇到此类错误
谁来帮帮我
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查询中构造。
最佳答案
select new APPLICANT()
实体框架不支持此功能。它会在使用查询时(而不是在构造查询时)被诊断出来,这就是为什么您在其中获得异常的行令人困惑的原因。
您可以构造不是数据库实体的任何类型,包括匿名类型,因此您可以
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
和Profile
中都具有APPLICANT
等,并且我不知道这些值是否相同。如果不是,那么最后的建议对您将无用。