initial commit
This commit is contained in:
3
docs/ef-core/index.md
Normal file
3
docs/ef-core/index.md
Normal file
@ -0,0 +1,3 @@
|
||||
# EF Core Snippets and Musings
|
||||
|
||||
#### [Stored Procedure in Migration](./stp-migration.md)
|
86
docs/ef-core/stp-migration.md
Normal file
86
docs/ef-core/stp-migration.md
Normal file
@ -0,0 +1,86 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Adding Stored Procedures to a Migration
|
||||
|
||||
Sometimes even when working with an ORM like Entity Framework Core, you need to use a stored procedure. This is especially true when you are working with legacy databases or you need to have performant and consise SQL.
|
||||
|
||||
## Add Migration
|
||||
|
||||
The first step is to add a migration to your DB Context:
|
||||
|
||||
::: code-group
|
||||
|
||||
```bash [dotnet CLI]
|
||||
dotnet ef migrations add AddUserStoredProcedure
|
||||
```
|
||||
|
||||
|
||||
```bash [Package Manager Console]
|
||||
Add-Migration AddUserStoredProcedure
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
This will add a migration file similar to the following:
|
||||
|
||||
```csharp
|
||||
public partial class AddUserStoredProcedure : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Add Stored Procedure
|
||||
|
||||
The stored precedure can then be added using the `Sql` method on the `MigrationBuilder` object. The following example shows how to add a stored procedure that returns a user by their ID:
|
||||
|
||||
```csharp
|
||||
public partial class AddUserStoredProcedure : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.Sql(@"
|
||||
CREATE PROCEDURE [dbo].[GetUserById]
|
||||
@Id int
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SELECT * FROM [dbo].[Users] WHERE [Id] = @Id
|
||||
END
|
||||
");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.Sql(@"
|
||||
DROP PROCEDURE [dbo].[GetUserById]
|
||||
");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Update Database
|
||||
|
||||
Once the migration has been added, you can update the database using the following command:
|
||||
|
||||
::: code-group
|
||||
|
||||
```bash [dotnet CLI]
|
||||
dotnet ef database update
|
||||
```
|
||||
|
||||
```bash [Package Manager Console]
|
||||
Update-Database
|
||||
```
|
||||
|
||||
:::
|
Reference in New Issue
Block a user