Skip to content
Advertisement

Unable to make raw SQL calls from Entity Framework Core

I am working on a project where I am moving specific rows from a table between multiple different environments. The table has an Identity column and when I try to move it I get an error that Identity_Insert is off.

Looking at several of the questions on here one of the solutions has been to call Context.Database.ExecuteSqlCommand(), ExecuteSqlRaw() or the async variations of them. However when I attempt to call them in my code I get an error indicating

‘DatabaseFacade’ does not contain a definition for ‘ExecuteSqlCommand’ and no accessible extension method could be found

and the only execute option I even see in the intellisense list is CreateExecutionStrategy.

I have the Nuget packages Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Relational, Microsoft.EntityFrameworkCore.SqlServer and the tools and abstractions packages all installed so I am not sure why I cannot see any of these options which are present and set to version 5.0.16.

Any ideas on what package I may be missing in order to access these methods? I even tried installing the nuget package for EF6 but that didn’t help either.

Code snippet

Error message Image enter image description here

Advertisement

Answer

Not Entirely sure what changed but coming back to this a few days ago I rebuilt the Application again and it was still giving me errors about ExecuteSqlCommand() not being defined, but I also added in calls to Database.OpenConnection() and Database.CloseConnection() which were missing originally. Once those were added in I could see the ExecuteSqlRaw() Method in intellisense and inserting that into the code fixed my issues.

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement