我越來越想做一個LINQ查詢時,此錯誤的方法:C#NET LINQ到實體不承認
LINQ到實體無法識別方法「System.Collections.Generic.IEnumerable` 1 [FEI.Entities.EF6.Tables.HORSE_IDENTITY_GENDER] GetHorseIdentityGenderQuery(FEI.Entities.EF6.Tables.HORSE_DOCUMENT_PART)'方法,並且此方法不能被翻譯爲商店表達式。
我讀了很多以前的問題,人們得到了同樣的錯誤,但我明白,這是因爲LINQ到實體,需要全LINQ查詢表達式轉換爲服務器查詢,因此,你可以」在其中調用外部方法。我還沒有能夠將我的場景轉化爲現在可行的方案,而我的大腦已經開始融化,所以我希望有人能指引我朝着正確的方向前進。我們使用的是實體框架和規範模式(我對這兩者都是新手)。
下面是一個使用規範的代碼:
HORSE_DOCUMENT HorseDocForPart = Bll.GetHorseDocumentForPartUpload(horseId, identityType);
下面是從方法提供GetHorseDocumentForPartUpload
public HORSE_DOCUMENT GetHorseDocumentForPartUpload(int horseID, HorseDocGender identityType)
{
// Get the unique horse document
var horseDoc = Tables
.HORSE_DOCUMENT
.Where(hd =>
hd.HORSE_UID == horseID &&
hd.HORSE_IDENTITY_TYPE.HORSE_IDENTITY_TYPE_FULL_CODE == identityType.ToString() &&
!hd
.HORSE_DOCUMENT_PART
.Any(hdp =>
hdp.VALIDATION_STATUS != HorseDocPartStatus.REFUSED.ToString() &&
GetHorseIdentityGenderQuery(hdp).Any(hig => hig.IS_FULL)
)
).SingleOrDefault();
return horseDoc;
}
這裏的最後一個代碼的代碼:
public IEnumerable<HORSE_IDENTITY_GENDER> GetHorseIdentityGenderQuery(HORSE_DOCUMENT_PART horseDocPart)
{
var possibleDocs = Tables
.DOCUMENTs
.Where(doc => doc.DOC_OWNER_UID == horseDocPart.HORSE_DOCUMENT_PART_UID);
return horseDocPart
.HORSE_DOCUMENT
.HORSE_IDENTITY_TYPE
.HORSE_IDENTITY_GENDER
.Join(
possibleDocs,
hig => hig.DOCUMENT_GENDER_CODE.DOCUMENT_GENDER_CODE_UID,
doc => doc.DOCUMENT_GENDER_CODE_UID,
(dgc, doc) => dgc
);
}
IsCharityMatching在EF代碼示例沒有提及更爲詳細的解釋? –
對不起,這是一個錯誤。 它現在被修正了 –