🧩 1. Side-by-Side Query Comparison
Operation | SQL (Standard) | T-SQL (SQL Server) | PostgreSQL |
---|---|---|---|
Select Data | sql SELECT * FROM Employees; | sql SELECT * FROM Employees; | sql SELECT * FROM Employees; |
Insert Record | sql INSERT INTO Employees (Name, Dept) VALUES ('Ravi', 'IT'); | sql INSERT INTO Employees (Name, Dept) VALUES ('Ravi', 'IT'); | sql INSERT INTO Employees (Name, Dept) VALUES ('Ravi', 'IT'); |
Declare Variable | ❌ Not supported | sql DECLARE @Dept NVARCHAR(20) = 'HR'; SELECT * FROM Employees WHERE Dept = @Dept; | sql DO $$ DECLARE dept TEXT := 'HR'; BEGIN SELECT * FROM Employees WHERE Dept = dept; END $$; |
String Concatenation | ```sql SELECT FirstName | ' ' | |
Current Date | sql SELECT CURRENT_DATE; | sql SELECT GETDATE(); | sql SELECT NOW(); |
Top / Limit | sql SELECT * FROM Employees FETCH FIRST 5 ROWS ONLY; | sql SELECT TOP 5 * FROM Employees; | sql SELECT * FROM Employees LIMIT 5; |
Stored Procedure | Limited / Varies by DB | sql CREATE PROCEDURE GetEmployees AS BEGIN SELECT * FROM Employees; END; | sql CREATE FUNCTION GetEmployees() RETURNS TABLE(...) AS $$ SELECT * FROM Employees; $$ LANGUAGE sql; |
✅ Takeaway:
-
T-SQL adds variables, flow control, and procedural logic.
-
PostgreSQL has its own procedural language PL/pgSQL with advanced functions and JSON operations.
-
Standard SQL works across all, but lacks procedural capabilities.
🛠 2. Entity Framework Core Setup in .NET Core Web API
Now let’s see how to connect .NET Core Web API with each database using Entity Framework Core (EF Core).
🔹 A. SQL Server (T-SQL)
🧩 Install NuGet Package
⚙️ appsettings.json
⚙️ Program.cs
🧱 Example Entity
✅ SQL Server uses T-SQL syntax internally for all queries EF Core generates.
🔹 B. PostgreSQL
🧩 Install NuGet Package
⚙️ appsettings.json
⚙️ Program.cs
✅ PostgreSQL queries generated by EF Core use PostgreSQL syntax, including features like LIMIT, RETURNING, and ILIKE.
🔹 C. Generic SQL (Database Independent Example)
If you’re writing SQL logic that can work on both SQL Server and PostgreSQL, use standard SQL commands in EF Core’s LINQ or raw SQL:
✅ EF Core translates this query automatically to T-SQL (if SQL Server) or PostgreSQL syntax — making your code database-independent.
⚡ 3. Real-Time Example: Hybrid Database Microservice
In real-world microservices:
-
OrderService (SQL Server / T-SQL) → Handles transactional operations
-
AnalyticsService (PostgreSQL) → Stores analytical data, JSON reports, or logs
Example Architecture:
This architecture ensures high scalability and polyglot persistence, allowing each microservice to choose the most efficient database engine.
🧠 Interview Q&A (EF + DB Context)
Q1. How does EF Core handle different databases?
👉 EF Core uses different providers (SqlServer, Npgsql, MySql, etc.) that translate LINQ queries into DB-specific SQL.
Q2. Can I switch from SQL Server to PostgreSQL easily?
👉 Yes, if you write queries using LINQ and avoid DB-specific T-SQL code.
Q3. What’s the main difference between EF Core SQL Server and EF Core PostgreSQL providers?
👉 SQL Server uses TOP
, GETDATE()
, IDENTITY
; PostgreSQL uses LIMIT
, NOW()
, and SERIAL
.
Q4. Is PostgreSQL good for microservices?
👉 Absolutely. It supports JSON, schema evolution, and strong concurrency — ideal for microservices and cloud-native apps.
🏁 Conclusion
Use Case | Database | Query Type | EF Core Provider |
---|---|---|---|
Enterprise apps on Azure | SQL Server | T-SQL | Microsoft.EntityFrameworkCore.SqlServer |
Open-source, cloud-based systems | PostgreSQL | SQL / PLpgSQL | Npgsql.EntityFrameworkCore.PostgreSQL |
Database-agnostic logic | Any RDBMS | Standard SQL | Generic EF Core LINQ |
SQL = The language
T-SQL = Microsoft’s dialect
PostgreSQL = The database engine
Mastering all three gives you the flexibility to design robust, cloud-ready microservices that run anywhere — from Azure to AWS to on-premises.