gpt4 book ai didi

c# - 如何在具有自动增量键的表中查找特定实体? ( Entity Framework )

转载 作者:行者123 更新时间:2023-11-30 16:01:01 25 4
gpt4 key购买 nike

我有以下测试方法:

  [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 是为 User 对象自动生成的,那么我应该如何获得这个特定的 ID?在 GetUser() 后面,我使用 DbSet 类中的 Find(id) 方法。

最佳答案

当 EF 插入具有数据库生成的 Id 的记录时,它会将新的 Id 值读取到保存的实体中。所以你可以简单地做:

 user = _dbService.GetUser(user.Id);

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

  1. 目前,您在 _dataContext 实例中创建了一个用户,它也在 dbService 实例中使用。您必须确保这些实例对于每个测试都是新的。否则,测试将影响其他测试,测试结果将变得不可预测。

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

关于c# - 如何在具有自动增量键的表中查找特定实体? ( Entity Framework ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39141713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com