使用Entity Framework Core创建SQL触发器是否可能?
也许可以通过使用以下指示:
protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
}
或者仅仅通过在迁移脚本中执行SQL语句
public override void Up()
{
}
使用Entity Framework Core创建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触发器的软件包,通过流畅的语法可以使得触发器在工作之后执行插入、更新、upsert、删除、如果不存在则插入等语句。
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()
dotnet ef migrations add AMigration
执行时 Up 方法中没有生成任何内容: .Action(ta =>
ta.Update(
(insertedEntity, searchedEntity) => insertedEntity.Id == searchedEntity.Id,
(insertedEntity, foundEntity) => (new AvailabilitySettings(foundEntity) { Revision = foundEntity.Id }))
));```
- Dragouf
mysql
,postgresql
,sql-server
,oracle
或db2
- 或者完全不同的其他内容。 - marc_smigrationBuilder.Sql("CREATE TRIGGER …")
等。 - Ivan Stoev