martedì 4 febbraio 2020

Non è possibile convertire espressione lambda nel tipo 'string' perché non è un tipo delegato

Se stiamo utilizzando linq to Entity, può capitare che venga visualizzato il messaggio "cannot convert lambda expression to type 'string' because it is not a delegate type".
Per esempio il frammento di codice qui di seguito, genera tale errore nella parte include.

Entita.NomeTabella.Include(c => c.TabellaRelazione).Include(c => c.TabellaRelazione2);

Questo è dovuto perchè non abbiamo aggiunto lo spazio dei nomi System.Data.Entity;
Una volta aggiunto non avremo più questo errore.

3 commenti:

Anonimo ha detto...

Ciao , ho provato ad eseguire database-first sul db AdventureWorks2014 , ottengo un db context con 109 errori,questi sono di sue tipi :

1) CS1660 Non è possibile convertire espressione lambda nel tipo 'string' perché non è un tipo delegato

2) CS1929 'PropertyBuilder' non contiene una definizione per 'HasComputedColumnSql' e il miglior overload 'RelationalPropertyBuilderExtensions.HasComputedColumnSql(IConventionPropertyBuilder, string, bool)' del metodo di estensione richiede un ricevitore di tipo 'IConventionPropertyBuilder'

il primo si verifica su un codice tipo questo :

entity.HasIndex(e => new { e.AddressLine1, e.AddressLine2, e.City, e.StateProvinceId, e.PostalCode }, "IX_Address_AddressLine1_AddressLine2_City_StateProvinceID_PostalCode")
.IsUnique();

il secondo :

entity.Property(e => e.SalesOrderNumber)
.IsRequired()
.HasMaxLength(25)
.HasComputedColumnSql("(isnull(N'SO'+CONVERT([nvarchar](23),[SalesOrderID]),N'*** ERROR ***'))", false)
.HasComment("Unique sales order identification number.");

spero tu abbia qualche suggerimento su come risolvere e cosa studiare,grazie,ciao

Anonimo ha detto...

""risolto"" a chi interessa può trovare i dettagli qua https://www.iprogrammatori.it/forum-programmazione/dotnet-framework/database-first-canna-brutto-t46056.html#p8668909

Emanuele ha detto...

Grazie per aver condiviso anche la soluzione.