我如何用我的id插入对象

本文关键字:插入 对象 id 我的 何用 | 更新日期: 2023-09-27 18:18:36

我使用的是c# 4.5.1和实体框架6.1.3。

我所需要做的就是插入我的对象的主id键,比如;1-3-5-7-9-11-13-15等等…

我不想使用ef的自动递增特性来插入它们。

;

       public static void SeedCategories(DataContext context)
    {
        context.Categories.AddOrUpdate(new Category
        {
            Id = 1,
            Name = "Haber",
            IsActive = true
        });
        context.SaveChanges();
        context.Categories.AddOrUpdate(new Category
                                       {
                                           Id = 5,
                                           Name = "Basic",
                                           ParentId = 1,
                                           IsActive = true
                                       },
                                       new Category
                                       {
                                           Id = 7,
                                           Name = "Medium",
                                           ParentId = 1,
                                           IsActive = true
                                       },
                                       new Category
                                       {
                                           Id = 9,
                                           Name = "Pro",
                                           ParentId = 1,
                                           IsActive = true
                                       },
                                       new Category
                                       {
                                           Id = 11,
                                           Name = "Advanced",
                                           ParentId = 1,
                                           IsActive = true
                                       },
                                       new Category
                                       {
                                           Id = 13,
                                           Name = "Ultimate",
                                           ParentId = 1,
                                           IsActive = true
                                       }
            );
        context.SaveChanges();
    }

但是实体框架插入所有这些对象,比如;

  • Id = 1, Name = Haber
  • Id = 2, Name = Basic
  • Id = 3, Name = Medium
  • Id = 4, Name = Pro

所以我需要你的帮助…

@Update:为什么我需要这个?我们正在将旧数据库迁移到新数据库。但由于业务需求,一些属性和类别在新数据库中将不使用。例如如果类别属性isActive = false。我只取isActive = true。作为总结:我有一个类别列表,如id = 3, (id = 4是isActive = false), id = 5, id = 33, id = 410等。

我如何用我的id插入对象

不确定它是否可以作为使用实体框架或Visual Studio的代码,但我确信它在SQL Server管理工作室是可行的。您可以在SQL Server Management Studio中更改主键的标识规范。如果您将Identity Increment的值设置为2,然后将Identity Seed的值设置为1,我认为您最终将得到所需的结果,而无需在代码中指定ID值。

如果你必须使用实体框架代码,是否没有方法/属性可以让你手动指定主键是什么?类似于"SET IDENTITY_INSERT"在SQL Server命令?

如果这是永久性的,请使用上面的注释。如果它只是用于播种,请参阅以下答案:我如何暂时关闭EF Code First中的IDENTITY列?

编辑:对不起,我一时想不起来。我使用的实际工作代码是编辑过的。

我的代码是这样的:

if (!dataContext.Categories.Any())
{
var sqlInsert = @"SET IDENTITY_INSERT [dbo].[Category] ON;
   INSERT INTO Category (Id, Name, ParentId, IsActive) VALUES (5, 'Basic', 1, 1);
   INSERT INTO Category (Id, Name, ParentId, IsActive) VALUES (7, 'Medium', 1, 1);
   SET IDENTITY_INSERT [dbo].[Category] OFF;";
   dataContext.Database.ExecuteSqlCommand(sqlInsert);
}