J'ai 3 projets dans ma solution comme ci-dessous:
Donc, dans le projet de modèle, j'ai défini mes tables, relations, requêtes et leurs classes, puis ajouté cela sur ProjectA et ProjectB.
sur ProjectB (.net core) dans startup.cs par services.AddDbContext essaie d'ajouter dbcontext (ModelProject) mais obtient cette erreur:
Impossible de convertir l'expression lambda en type «ServiceLifetime» car il ne s'agit pas d'un type délégué
Est-ce une erreur pour utiliser EF sur Core Project? Comment puis-je le résoudre?
ProjectB (Core):
services .AddEntityFrameworkSqlServer() .AddDbContext<Models.DataContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("DataContext")); });
et 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;
}
}
}
Cela doit être:
.AddDbContext<Models.DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DataContext")));
En d'autres termes, sans les accolades. Vous pouvez également simplement renvoyer l'instance d' options
, mais c'est tout simplement un surcroît de code inutile. L'exception est un hareng rouge. Parce que votre lambda est actuellement essentiellement une action (pas de retour) plutôt qu'un func, il ne correspond pas au bon AddDbContext
pour AddDbContext
.