Sto utilizzando Entity Framework nel mio codice basato su C#. Sto incontrando una stranezza inaspettata e sto cercando suggerimenti.Entity Framework: impossibile convertire l'espressione lambda in "string" perché non è un tipo delegato
Caso 1, 2, 3, 4 ... Progetti:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll
Campioni (tutti di questi lavori):
RivWorks.Alpha.dll:
public static bool EndNegotitation(long ProductID)
{
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == ProductID select a).FirstOrDefault();
...
}
RivWorks.Service.dll
public static RivWorks.Model.NegotiationAutos.AutoWithImage
GetProductById(long productId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.AutoID == productId select a;
return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage>
GetProductByCompany(Guid companyId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.CompanyID == companyId select a;
return myProduct.ToList();
}
ecc
Case "stranezza":
(progetto WCF) RivWorks.Web.Service.dll
Contiene gli stessi riferimenti come gli altri progetti.
public NegotiateSetup GetSetup(string method, string jsonInput)
{
...
long.TryParse(ProductID, out result);
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == result select a).FirstOrDefault();
...
}
sto ottenendo questo errore di compilazione (la parola "dove" è evidenziato nel mio editor):
Impossibile convertire espressione lambda al tipo 'stringa' perché non è un tipo delegato
Qualche idea che cosa potrebbe causare questo?
Sembra strano. Se rimuovi la chiamata a 'FirstOrDefault', cosa succede?Ovviamente fallirà dove proverai a usare 'product' in seguito, ma questa istruzione viene compilata? –
Inoltre, se lo si cambia in 'var product = _dbFeed.AutoWithImage.Where (a => a.AutoID == risultato);' cosa succede allora? Prendiamo le espressioni di query dal mix ... –
Tutti questi esempi falliscono. Tuttavia, ho esaminato le istruzioni Using in tutti i miei pezzi di codice e ho scoperto che ne mancava uno: Using System.Linq; Quello ha riparato l'errore. –