Сначала создавать хранимые процедуры с использованием кода структуры Entity Framework?
Я использую Entity Framework Code First в моем текущем проекте. База данных состоит из множества таблиц, многих представлений и многих функций. Я могу создавать таблицы, используя First Entity Framework Code First. Но я не могу найти способ создания хранимых процедур с использованием Entity Framework Code First. Я знаю, что стратегия Database-First выполнит мое требование, и все будет хорошо, но я не хочу использовать стратегию Database-First в свой существующий код проекта.
Пожалуйста, помогите мне, кто лучший способ создать хранимые процедуры с использованием стратегии Entity Framework Code First?
Пожалуйста, помогите мне, спасибо.
Ответы
Ответ 1
Вместо использования StringBuilder вы можете использовать существующие методы EF
public override void Up()
{
CreateStoredProcedure(
"MyStoredProcedure",
p => new
{
id = p.Int()
},
@"SELECT some-data FROM my-table WHERE id = @id"
);
}
public override void Down()
{
DropStoredProcedure("MyStoredProcedure");
}
Ответ 2
С кодом Сначала вы всегда делаете Migrations. Миграции наследуются от объекта DbMigration, который имеет очень полезный метод:
DbMigration.Sql(строка)
Вот шаги:
1) Откройте консоль диспетчера пакетов из диспетчера пакетов NuGet
2) Тип add-migration CreateHelloWorldStoredProcedureExample
3) Visual Studio покажет вам новый класс с двумя пустыми методами: Вверх и Вниз
4) В методе Up напишите свой код, вот пример
public override void Up()
{
StringBuilder storedProcedureCode = new StringBuilder();
storedProcedureCode.Append("CREATE PROCEDURE dbo.HelloWorld" + Environment.NewLine);
storedProcedureCode.Append("AS" + Environment.NewLine);
storedProcedureCode.Append("BEGIN" + Environment.NewLine);
storedProcedureCode.Append(@"SELECT 'Hello World'" + Environment.NewLine);
storedProcedureCode.Append("END" + Environment.NewLine);
this.Sql(storedProcedureCode.ToString());
}
В режиме Down:
public override void Down()
{
this.Sql("DROP PROCEDURE dbo.HelloWorld ");
}
После этого просто запустите базу данных обновлений и это будет!
Примечание. Если вы используете SQL Server, избегайте использования предложения GO.
Ответ 3
Если вы используете EF Core 2.1, вы можете создать хранимую процедуру таким образом:
public partial class AddStoredProcedure : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"your create procedure statement");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"your drop procedure statement");
}
}
Ответ 4
В EF6 вы можете создавать хранимые процедуры с помощью Code First. Взгляните на статью