是否可能以及如何使用 Entity Framework 核心创建触发器
Is it possible and how create a trigger with Entity Framework Core
是否可以使用 Entity Framework 核心创建 SQL 触发器。
也许可以使用
中的说明
protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
}
或者只需在迁移脚本中执行 SQL 语句
public override void Up()
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"create trigger .....");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"drop trigger <triggerName>");
}
Laraue.EfCoreTriggers 用于创建 SQL 触发器的包通过流畅的语法允许执行插入、更新、更新插入、删除、如果不存在则在触发器像这样工作后插入语句
modelBuilder.Entity<Transaction>()
.AfterInsert(trigger => trigger
.Action(triggerAction => triggerAction
.Upsert(transaction => new { transaction.UserId },
insertedTransaction => new UserBalance { UserId = transaction.UserId, Balance = insertedTransaction.Sum },
(insertedTransaction, oldBalance) => new UserBalance { Balance = oldBalance.Balance + insertedTransaction.Sum })));
此代码将被翻译成 sql 并应用到使用
的迁移
migrationBuilder.Sql()
是否可以使用 Entity Framework 核心创建 SQL 触发器。
也许可以使用
中的说明protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
}
或者只需在迁移脚本中执行 SQL 语句
public override void Up()
{
}
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"create trigger .....");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(@"drop trigger <triggerName>");
}
Laraue.EfCoreTriggers 用于创建 SQL 触发器的包通过流畅的语法允许执行插入、更新、更新插入、删除、如果不存在则在触发器像这样工作后插入语句
modelBuilder.Entity<Transaction>()
.AfterInsert(trigger => trigger
.Action(triggerAction => triggerAction
.Upsert(transaction => new { transaction.UserId },
insertedTransaction => new UserBalance { UserId = transaction.UserId, Balance = insertedTransaction.Sum },
(insertedTransaction, oldBalance) => new UserBalance { Balance = oldBalance.Balance + insertedTransaction.Sum })));
此代码将被翻译成 sql 并应用到使用
的迁移migrationBuilder.Sql()