0

我有下表:

public class Category
{
    public int Id{ get; set; }

    public string Name { get; set; }

    public int? ParentId { get; set; }

    public Category Parent { get; set; }
}

使用以下映射:

public class CategoryMap: IEntityTypeConfiguration<Category>
{
    public void Configure(EntityTypeBuilder<Category> builder)
    {
        builder.ToTable(nameof(Category));

        builder.Property(x => x.Id).UseHiLo();

        //other properties
    }
}

现在我想使用 fluentmigrator 创建两个新条目。但条目是相关的。第二类以第一类为父类。我怎样才能实现它?

我不能使用 fluentmigrator,因为我没有 ID

        Insert
            .IntoTable("Category")
            .Row(new
            {
                Name = "Category1"
            });

        Insert
            .IntoTable("Category")
            .Row(new
            {
                Name = "Category2",
                ParentId = 0 //Category1?
            });

我可以写一个 sql 查询,但我仍然没有 ID。我可以使用随机 ID,但它可能以 HiLo 算法中的问题结束。

Insert Into Category
(
    [Id],
    [Name],
    [ParentId]
)values(
    0, //?
    'Category1',
    null
)

我可以使用:

SELECT @@IDENTITY
SELECT IDENT_CURRENT('Category') 

但我使用 HiLo 算法来创建 Id。应该有可能以某种方式为我的插入脚本获取下一个 HiLo 值并使用它。还是有更好的方法来实现它?

4

0 回答 0