String interpolation in raw SQL methods, How is it possible?

Viewed 2216

I've just checked the new futures in Entity Framework Core 2.0. There is a really nice feature in it called "String interpolation in raw SQL methods" which is described here.

It says that this code:

var city = "Redmond";

using (var context = CreateContext())
{
    context.Customers.FromSql($@"
        SELECT *
        FROM Customers
        WHERE City = {city}");
}

creates this query:

SELECT *
FROM Customers
WHERE City = @p0

It is really strange to me! How FromSql method is written as it has just and input of type string.

How does it understand it is an interpolated string, and then create a parameter @p0 query for it? How can I write a method like FromSql aware of how its string parameters are created?

1 Answers
Related