Postgresql slow with Entity Framework Core
See original GitHub issueI’m trying to use Postgresql with Entity Framework Core. But I have problem with performance.
When I simply call the same SQL directly to Postgresql it runs in 1 ms, but in Entity Framework runs in ~120 ms. So, it is 120 times slower.
Here is an example query
SELECT COUNT(*)::INT
FROM "Campaign" AS x
WHERE x."UserId" = 3
This SQL query runs in 1 ms.
Here is Entity Framework Core debug result for the same query, it takes 133 ms
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (133ms) [Parameters=[@__userId_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT COUNT(*)::INT
FROM "Campaign" AS x
WHERE x."UserId" = @__userId_0
What is wrong here?
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 2.2.0-rtm-35687 initialized 'PostgreSqlContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: None
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__ipNumber_0='?' (DbType = Double)], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."CityName", x."CountryCode", x."CountryName", x."IpFrom", x."IpTo", x."RegionName"
FROM "IpLocation" AS x
WHERE (@__ipNumber_0 > x."IpFrom") AND (@__ipNumber_0 < x."IpTo")
LIMIT 1
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (133ms) [Parameters=[@__ipNumber_0='?' (DbType = Double)], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."CityName", x."CountryCode", x."CountryName", x."IpFrom", x."IpTo", x."RegionName"
FROM "IpLocation" AS x
WHERE (@__ipNumber_0 > x."IpFrom") AND (@__ipNumber_0 < x."IpTo")
LIMIT 1
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'IpLocation' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__id_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."ApiToken", x."BirthDate", x."CountryId", x."CreatedAt", x."DeletedAt", x."Email", x."EmailVerify", x."FacebookId", x."GoogleId", x."Image", x."InvoicePaymentFailCount", x."LastLoginAt", x."LoginErrorCount", x."Name", x."Password", x."PaymentStatus", x."PlanId", x."ResetPasswordToken", x."SelectedLanguageCode", x."ShopifyToken", x."Status", x."StripeId", x."Surname", x."Type", x."UpdatedAt"
FROM "User" AS x
WHERE x."Id" = @__id_0
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (134ms) [Parameters=[@__id_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."ApiToken", x."BirthDate", x."CountryId", x."CreatedAt", x."DeletedAt", x."Email", x."EmailVerify", x."FacebookId", x."GoogleId", x."Image", x."InvoicePaymentFailCount", x."LastLoginAt", x."LoginErrorCount", x."Name", x."Password", x."PaymentStatus", x."PlanId", x."ResetPasswordToken", x."SelectedLanguageCode", x."ShopifyToken", x."Status", x."StripeId", x."Surname", x."Type", x."UpdatedAt"
FROM "User" AS x
WHERE x."Id" = @__id_0
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'User' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__get_Item_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT e."Id", e."CreatedAt", e."DeletedAt", e."Description", e."DisplayCount", e."ImpressionCount", e."InteractionCount", e."Name", e."PopupCount", e."Price", e."StripeId", e."Type", e."UpdatedAt"
FROM "Plan" AS e
WHERE e."Id" = @__get_Item_0
LIMIT 1
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (134ms) [Parameters=[@__get_Item_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT e."Id", e."CreatedAt", e."DeletedAt", e."Description", e."DisplayCount", e."ImpressionCount", e."InteractionCount", e."Name", e."PopupCount", e."Price", e."StripeId", e."Type", e."UpdatedAt"
FROM "Plan" AS e
WHERE e."Id" = @__get_Item_0
LIMIT 1
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'Plan' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__userId_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT COUNT(*)::INT
FROM "Campaign" AS x
WHERE x."UserId" = @__userId_0
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (133ms) [Parameters=[@__userId_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT COUNT(*)::INT
FROM "Campaign" AS x
WHERE x."UserId" = @__userId_0
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__userId_0='?' (DbType = Int32), @__startDate_1='?' (DbType = DateTime), @__endDate_2='?' (DbType = DateTime)], CommandType='Text', CommandTimeout='30']
SELECT COUNT(*)::INT
FROM "Impression" AS x
WHERE ((x."UserId" = @__userId_0) AND (x."CreatedAt" > @__startDate_1)) AND (x."CreatedAt" < @__endDate_2)
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (134ms) [Parameters=[@__userId_0='?' (DbType = Int32), @__startDate_1='?' (DbType = DateTime), @__endDate_2='?' (DbType = DateTime)], CommandType='Text', CommandTimeout='30']
SELECT COUNT(*)::INT
FROM "Impression" AS x
WHERE ((x."UserId" = @__userId_0) AND (x."CreatedAt" > @__startDate_1)) AND (x."CreatedAt" < @__endDate_2)
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__userId_0='?' (DbType = Int32), @__domain_1='?', @__Replace_2='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."CampaignGoalId", x."CreatedAt", x."DeletedAt", x."JsonData", x."Name", x."Status", x."UpdatedAt", x."UserId"
FROM "Campaign" AS x
WHERE ((x."UserId" = @__userId_0) AND (x."Status" = TRUE)) AND EXISTS (
SELECT 1
FROM "CampaignDomainRelation" AS y
INNER JOIN "Domain" AS "y.Domain" ON y."DomainId" = "y.Domain"."Id"
WHERE ((("y.Domain"."Url" = @__domain_1) OR ((('www.' || "y.Domain"."Url")) = @__domain_1)) OR ("y.Domain"."Url" = @__Replace_2)) AND (x."Id" = y."CampaignId"))
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (134ms) [Parameters=[@__userId_0='?' (DbType = Int32), @__domain_1='?', @__Replace_2='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."CampaignGoalId", x."CreatedAt", x."DeletedAt", x."JsonData", x."Name", x."Status", x."UpdatedAt", x."UserId"
FROM "Campaign" AS x
WHERE ((x."UserId" = @__userId_0) AND (x."Status" = TRUE)) AND EXISTS (
SELECT 1
FROM "CampaignDomainRelation" AS y
INNER JOIN "Domain" AS "y.Domain" ON y."DomainId" = "y.Domain"."Id"
WHERE ((("y.Domain"."Url" = @__domain_1) OR ((('www.' || "y.Domain"."Url")) = @__domain_1)) OR ("y.Domain"."Url" = @__Replace_2)) AND (x."Id" = y."CampaignId"))
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'Campaign' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__8__locals1_location_CountryCode_0='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."Code", x."CreatedAt", x."DeletedAt", x."Name", x."UpdatedAt"
FROM "Country" AS x
WHERE x."Code" = @__8__locals1_location_CountryCode_0
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (132ms) [Parameters=[@__8__locals1_location_CountryCode_0='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."Code", x."CreatedAt", x."DeletedAt", x."Name", x."UpdatedAt"
FROM "Country" AS x
WHERE x."Code" = @__8__locals1_location_CountryCode_0
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'Country' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__country_Id_0='?' (DbType = Int32), @__8__locals1_location_RegionName_1='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."CountryId", x."CreatedAt", x."DeletedAt", x."Name", x."UpdatedAt"
FROM "City" AS x
WHERE (x."CountryId" = @__country_Id_0) AND (x."Name" = @__8__locals1_location_RegionName_1)
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (133ms) [Parameters=[@__country_Id_0='?' (DbType = Int32), @__8__locals1_location_RegionName_1='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."CountryId", x."CreatedAt", x."DeletedAt", x."Name", x."UpdatedAt"
FROM "City" AS x
WHERE (x."CountryId" = @__country_Id_0) AND (x."Name" = @__8__locals1_location_RegionName_1)
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'City' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@__countryCode_0='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."Code", x."CreatedAt", x."DeletedAt", x."Name", x."UpdatedAt"
FROM "Country" AS x
WHERE x."Code" = @__countryCode_0
LIMIT 1
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (132ms) [Parameters=[@__countryCode_0='?'], CommandType='Text', CommandTimeout='30']
SELECT x."Id", x."Code", x."CreatedAt", x."DeletedAt", x."Name", x."UpdatedAt"
FROM "Country" AS x
WHERE x."Code" = @__countryCode_0
LIMIT 1
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10808]
'PostgreSqlContext' generated a temporary value for the 'Id' property of new 'Impression' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10806]
Context 'PostgreSqlContext' started tracking 'Impression' entity. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10800]
DetectChanges starting for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10801]
DetectChanges completed for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10800]
DetectChanges starting for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10801]
DetectChanges completed for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10800]
DetectChanges starting for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10801]
DetectChanges completed for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.Update[10004]
SaveChanges starting for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10800]
DetectChanges starting for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10801]
DetectChanges completed for 'PostgreSqlContext'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000]
Opening connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20001]
Opened connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Transaction[20200]
Beginning transaction with isolation level 'ReadCommitted'.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20100]
Executing DbCommand [Parameters=[@p0='?' (DbType = Int32), @p1='?' (DbType = Int32), @p2='?' (DbType = DateTime), @p3='?' (DbType = DateTime), @p4='?', @p5='?' (DbType = DateTime), @p6='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
INSERT INTO "Impression" ("CampaignId", "CountryId", "CreatedAt", "DeletedAt", "SessionId", "UpdatedAt", "UserId")
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6)
RETURNING "Id";
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
Executed DbCommand (133ms) [Parameters=[@p0='?' (DbType = Int32), @p1='?' (DbType = Int32), @p2='?' (DbType = DateTime), @p3='?' (DbType = DateTime), @p4='?', @p5='?' (DbType = DateTime), @p6='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
INSERT INTO "Impression" ("CampaignId", "CountryId", "CreatedAt", "DeletedAt", "SessionId", "UpdatedAt", "UserId")
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6)
RETURNING "Id";
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10803]
Foreign key property 'Impression.Id' detected as changed. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see property values.
dbug: Microsoft.EntityFrameworkCore.Database.Command[20300]
A data reader was disposed.
dbug: Microsoft.EntityFrameworkCore.Database.Transaction[20202]
Committing transaction.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20002]
Closing connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20003]
Closed connection to database 'postgres' on server 'tcp://my-db-connection'.
dbug: Microsoft.EntityFrameworkCore.Database.Transaction[20204]
Disposing transaction.
dbug: Microsoft.EntityFrameworkCore.ChangeTracking[10807]
An 'Impression' entity tracked by 'PostgreSqlContext' changed from 'Added' to 'Unchanged'. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see key values.
dbug: Microsoft.EntityFrameworkCore.Update[10005]
SaveChanges completed for 'PostgreSqlContext' with 1 entities written to the database.
dbug: Microsoft.EntityFrameworkCore.Infrastructure[10407]
'PostgreSqlContext' disposed.
Here is my Campaign
model class:
using System;
using System.Collections.Generic;
namespace Model.Models
{
public partial class Campaign
{
public Campaign()
{
CampaignDomainRelation = new HashSet<CampaignDomainRelation>();
CampaignFormData = new HashSet<CampaignFormData>();
Display = new HashSet<Display>();
Domain = new HashSet<Domain>();
Impression = new HashSet<Impression>();
Interaction = new HashSet<Interaction>();
}
public int Id { get; set; }
public int? UserId { get; set; }
public string Name { get; set; }
public int? CampaignGoalId { get; set; }
public string JsonData { get; set; }
public bool? Status { get; set; }
public DateTime? CreatedAt { get; set; }
public DateTime? UpdatedAt { get; set; }
public DateTime? DeletedAt { get; set; }
public virtual CampaignGoal CampaignGoal { get; set; }
public virtual User User { get; set; }
public virtual ICollection<CampaignDomainRelation> CampaignDomainRelation { get; set; }
public virtual ICollection<CampaignFormData> CampaignFormData { get; set; }
public virtual ICollection<Display> Display { get; set; }
public virtual ICollection<Domain> Domain { get; set; }
public virtual ICollection<Impression> Impression { get; set; }
public virtual ICollection<Interaction> Interaction { get; set; }
}
}
Here is my jsporj file :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<RuntimeFrameworkVersion>2.2.0</RuntimeFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
</ItemGroup>
</Project>
Issue Analytics
- State:
- Created 4 years ago
- Comments:17 (7 by maintainers)
Top Results From Across the Web
c# - Npgsql EF Core (.NET 6) is extremely slow ...
There is a problem with queries to existing Postgres database using Npgsql EF Core (.NET 6). Even simple EF queries are extremely slow...
Read more >Performance benchmarks of PostgreSQL .NET with Npgsql ...
Entity Framework Core is 1.5 times slower than the other methods. Not that it's very slow by user perception standards. The operations are ......
Read more >Efficient Querying - EF Core
Performance guide for efficient querying using Entity Framework Core.
Read more >Three ways to improve the EF Core performance in your . ...
In this article, I'm going to describe the three most straightforward approaches to increase the performance of Entity Framework Core (EF Core) operations ......
Read more >Performance Diagnosis - EF Core
Identifying slow database commands via logging. At the end of the day, EF prepares and executes commands to be executed against your database; ......
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Yes, this is right. It is not about npgsql. My experience was about multi regional purpose. So, npgsql was slow as the other clients.
For anyone arriving here, Npgsql really is just a PostgreSQL client - it opens a TCP connection to your PostgreSQL server just like any other driver would (or psql); as a general rule, this makes it very unlikely for Npgsql to be the cause of consistent and significant query slowdown. When comparing Npgsql perf against any other client, carefully check that you’re testing from the same client machine, and connecting to the same server (PostgreSQL) machine.