Entity Framework Core Interview Question #141

How can EF Core execute a non-query SQL command?

Performance, Raw SQL, Stored Procedures & Advanced Queries Senior Advanced

Quick Interview Answer

Relational EF Core APIs can execute SQL commands that do not return entity query results, such as controlled UPDATE or DELETE commands. Values should be parameterized. Direct SQL bypasses normal tracked-entity SaveChanges behavior, so already tracked entities may contain stale values afterward.

Detailed Explanation

Relational EF Core APIs can execute SQL commands that do not return entity query results, such as controlled UPDATE or DELETE commands. Values should be parameterized. Direct SQL bypasses normal tracked-entity SaveChanges behavior, so already tracked entities may contain stale values afterward.

Code Example

int affected = await db.Database.ExecuteSqlAsync(
    $"UPDATE Products SET IsPublished = {false} WHERE StockQuantity = {0}");