Ho 3 progetti nella mia soluzione come di seguito:
Quindi nel progetto modello ho definito le mie tabelle, relazioni, query e le loro classi, quindi l'ho aggiunto su ProjectA e ProjectB.
su ProjectB (.net core) in startup.cs da services.AddDbContext tenta di aggiungere dbcontext (ModelProject) ma ottiene questo errore:
Impossibile convertire l'espressione lambda nel tipo "ServiceLifetime" perché non è un tipo delegato
Questo errore è relativo all'uso di EF su Core Project? Come posso risolverlo?
ProjectB (Core):
services .AddEntityFrameworkSqlServer() .AddDbContext<Models.DataContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("DataContext")); });
e dbcontext (EntityFramework Standard):
namespace ModelProject
{
public class DataContext : DbContext
{
public DataContext() : base("DataContext")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Migrations.Configuration>());
(this as IObjectContextAdapter).ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300;
}
}
}
Deve essere:
.AddDbContext<Models.DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DataContext")));
In altre parole, senza le parentesi graffe. In alternativa, potresti semplicemente restituire l'istanza delle options
, ma è tutto solo un inutile eccesso di codice. L'eccezione è un'aringa rossa. Poiché attualmente la tua lambda è essenzialmente un'azione (nessun ritorno) piuttosto che una funzione, non corrisponde al parametro giusto per AddDbContext
.