如何使用自动增量键在表中查找特定实体?(实体框架)

萨萨·科诺普卡(SaszaKonopka)

我有以下测试方法:

  [Test]
        public void GetUserTest()
        {
            //Arrange
            User user = new User();
            user.Name = "someName";
            user.BirthDate = DateTime.Now;
            _dataContext.Users.Add(user);
            _dataContext.SaveChanges();

            //Execute

            user = _dbService.GetUser(???);

            //Assert

            Assert.NotNull(user);
        }

ID是为用户对象自动生成的,那么我应该如何获得这个特定的ID?使用DbSet类中的Find(id)方法在GetUser()im之后。

格特·阿诺德

当EF插入具有数据库生成的ID的记录时,它将读取新的ID值到保存的实体中。因此,您可以简单地执行以下操作:

 user = _dbService.GetUser(user.Id);

但是我对测试方法本身有一些意见。

  1. 当前,您在_dataContext实例中创建一个用户,该用户也在实例中使用dbService您必须确保每个测试的这些不变性都是新如果不是这样,则测试将影响其他测试,并且测试结果将变得不可预测。

  2. 另外,对于测试的“安排/执行/声明”部分,您应该使用服务/上下文的新实例。在当前测试中,创建一个用户,然后在“执行(执行)”部分中从上下文中检索该同一用户(因为它使用Find)。实际上,您将创建服务和上下文)并从数据库中获取用户,因为Find在上下文的缓存中找不到它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章