当前位置: 首页 > 面试题库 >

实体框架7 IDENTITY_INSERT

李俊雅
2023-03-14
问题内容

我需要在每个用户已经有一个ID作为键的数据库中存储大量用户数据。但是,这些用户全部来自更大的用户池,因此,该ID不会增加并且无法自动生成。我需要能够手动设置ID。

是否有捷径可寻?


问题答案:

我进行了一些测试,这似乎对我在EF 7.0.0 rc1-final上有效:

modelBuilder.Entity<Foo>().HasKey(x => x.Id);
modelBuilder.Entity<Foo>().Property(x => x.Id).ValueGeneratedNever();

我的测试代码:

static void Main(string[] args)
{
    using (var db = new FooContext())
    {
        var myFoo = new Foo {Id = 1002, Descr = "Test"};
        db.Add(myFoo);
        db.SaveChanges();
    }
    using (var db = new FooContext())
    {
        var myFoo = db.Foos.FirstOrDefault(x => x.Id == 1002);
        Console.WriteLine($"id = {myFoo?.Id}, descrip = {myFoo?.Descr}");
    }
}

(完整的程序代码在这里:http :
//pastebin.com/hSs9HZCP)

它可以正确插入和检索具有指定ID的记录,并且该表具有指定的正确主键。

这是生成的迁移代码:

migrationBuilder.CreateTable(
    name: "Foo",
    columns: table => new
    {
        Id = table.Column<long>(nullable: false),
        Descr = table.Column<string>(nullable: true)
    },
    constraints: table =>
    {
        table.PrimaryKey("PK_Foo", x => x.Id);
    });


 类似资料:
  • 实体框架5.0首先使用现有数据库编写代码。使用电动工具对类进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子的外键返回到父母ID。ID都是带有自动增量的int。我添加了许多父母记录,现在想将孩子记录添加到特定的父母。我能看到的唯一方法是通过在父母表中搜索名称或其他属性并返回ID来找到适当的父母ID。然后在添加孩子时在外键属性中使用该ID。我不想设置新父母,所以这是将孩子添加到现有父母的唯

  • 如何模拟AsNoTracking方法? 在下面的示例中,DbContext已经注入到服务类中,如果我从GetOrderedProducts方法中移除AsNoTracking扩展方法,它可以正常工作,但是with AsNoTracking测试失败,因为它返回null。我还试图模拟AsNoTracking以返回正确的值,但它不起作用。

  • 问题内容: 我尝试通过使用实体框架连接MySql数据库,但Visual Studio不想生成* .edmx? 我在db中有1个表, -选择ado.net edm,- 选择从数据库生成 -选择 db-在这里我认为我应该选择表,但是 向导关闭 我尝试使用其他版本的EF,但是仍然无法正常工作。问题是什么? 我的软件: -Windows 7 * 64 -vs 2017社区 -mySql 8.0社区 问题答

  • 问题内容: 我有以下示例代码: 我需要查找将哪些SQL查询发送到数据库。 如何使用SQL Express和VS 2012剖析EF查询? 有什么工具吗? 问题答案: 您在这里有一些选择。 通过在运行时打印出来检查查询看到(我认为这仅适用于查询,可能不是最好在上述情况下) 使用管理工作室内置的SQL事件探查器 使用Entity Framework Profiler(一个非常好的第三方工具,带有试用版,

  • 问题内容: 我正在将子系统从 NHibernate 移植到 Entity Framework, 并希望看到将以下查询移植到 EF 的最佳方法。 帐户余额类别为: 该表是: 示例数据是(使用数字ID可以更好地理解): 该 AccountBalanceByDate 实体持有某一天的账户余额。如果某天没有交易,则该天将没有 AccountBalanceByDate ,我们应该查看前几天以查看该帐户的余额

  • 问题内容: 我正在尝试使以下内容起作用: 导致异常的部分是: 编辑: 经过进一步观察, (在首次致电后,没有)为我完成了这项工作。 问题答案: 看来您无法对查询中的children集合进行排序。在查询之后进行排序,或者在第二个查询中加载子级。 类似的问题和答案在这里