如何在FluentMigrator的迁移中检索插入的标识

本文关键字:检索 插入 标识 迁移 FluentMigrator | 更新日期: 2023-09-27 18:08:22

在迁移过程中如何插入到我的表中,然后检索ID,然后使用它在另一个表中插入相关数据

我现在有一个硬ID插入,但我不知道它会是什么,当我将运行迁移。

var contactId = 2;
var phoneNumber = 2;
Insert.IntoTable("Contacts")
    .WithIdentityInsert()
    .Row(new
    {
        Id = contactId,
        TimeZoneId = contact.TimeZoneId,
        contact.CultureId,
        Type = (byte)(int)contact.Type,
        Email = contact.Email.ToString(),
        EntityId = entityId
    });
 Insert.IntoTable("PhoneNumbers")
    .WithIdentityInsert()
    .Row(new
    {
        Id = phoneNumberId,
        phone.Number,
        Type = (byte)(int)phone.Type,
        ContactId = contactId
    });

我希望能够检索插入的ID并将其用于第二次插入,而不是硬编码它。

我正在使用SQL Server,如果它是任何帮助…

我以为这是微不足道的,但似乎不是,谷歌后,并没有看到任何答案在这里。

如何在FluentMigrator的迁移中检索插入的标识

您可以在.Row()调用后通过链接.WithInsertIdentity()手动插入Id。

这将允许您将它保存在内存中,以便在其他对象中作为外键使用。不幸的是,FluentMigrator实际上不会执行任何SQL,直到Up()Down()方法中的所有代码完成执行。

对于相同的情况,我在sql-query中使用Execute.Sql()@@IDENTITY