IServiceCollection does not contain definition or extension for AddNpgsql
I am trying to use PostgreSQL for the first time and have a little difficulty building it without errors, if I don't close the RC2 packages it is ok. After blocking in RC2 packets, I have one error that I can't shake around to use the troubleshooting help:
MISTAKE
Startup.cs(22,18): error CS1061: 'IServiceCollection' does not contain a definition for 'AddNpgsql' and no extension method 'AddNpgsql' accepting a first argument of type 'IServiceCollection' could be found (are you missing a using directive or an assembly reference?)
PROJECT.JSON
{
"buildOptions": {
"preserveCompilationContext": true,
"emitEntryPoint": true,
"warningsAsErrors": true,
"debugType": "portable",
"copyToOutput": {
"include": [
"wwwroot",
"Views",
"config.json",
"web.config"
]
}
},
"dependencies": {
"AspNet.Security.OAuth.Introspection": "1.0.0-alpha1-final",
"AspNet.Security.OAuth.Validation": "1.0.0-alpha1-final",
"Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Mvc.Formatters.Json": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Mvc.Cors": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Commands": "1.0.0-rc2-*",
"Microsoft.EntityFrameworkCore.Relational": "1.0.0-rc2-final",
"Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.0-*",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final",
"OpenIddict.Core": "1.0.0-*",
"OpenIddict.EF": "1.0.0-*"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
}
},
"imports": [
"dnxcore50",
"portable-net451+win8"
]
}
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version": "1.0.0-preview1-final",
"imports": "portable-net45+wp80+win8+wpa81+dnxcore50"
}
},
"scripts": {
"postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
},
"publishOptions": {
"include": [
"wwwroot",
"Views",
"config.json",
"web.config"
]
}
}
STARTUP.CS (partially)
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddEntityFramework()
.AddNpgsql()
.AddDbContext<ApplicationContext>(options =>
options.UseNpgsql("Host=localhost;Username=dev;Password=dev;Database=tesdb"));
services.AddIdentity<tbl_ApplicationUser, tbl_ApplicationRole>()
.AddEntityFrameworkStores<ApplicationContext>()
.AddUserStore<CustomStore>()
.AddDefaultTokenProviders()
.AddOpenIddictCore<tbl_Application>
(conf => conf.UseEntityFramework());
services.AddAuthorization(options => {
options.AddPolicy("Default", builder => {
builder.RequireAuthenticatedUser();
builder.RequireActiveUser();
});
options.DefaultPolicy = options.GetPolicy("Default");
});
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<IDatabaseInitializer, DatabaseInitializer>();
services.AddTransient<IUtilityService, UtilityService>();
services.AddScoped<ICommonRepository, CommonRepository>();
}
+1
source to share
2 answers
Replaced RC2 driver AddNpgsql
with AddEntityFrameworkNpgsql
, so replace this code block:
services.AddEntityFramework()
.AddNpgsql()
.AddDbContext<ApplicationContext>(options =>
options.UseNpgsql("Host=localhost;Username=dev;Password=dev;Database=tesdb"));
With the help of this:
services.AddEntityFrameworkNpgsql()
.AddDbContext<ApplicationContext>(options =>
options.UseNpgsql("Host=localhost;Username=dev;Password=dev;Database=tesdb"));
+1
source to share
In EF Core 1.1, you need to use this code:
public class Startup
{
//...
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddEntityFrameworkNpgsql();
}
}
and
public class DatabaseClass : DbContext
{
//...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("my connection string");
}
}
+2
source to share