Oracle db 不会通过 webapi 更新,但 db 会通过 unittest 更新



我的 asp.net webapi项目有问题。我正在使用 ODP.NET 与 Oracle 数据库连接。我的 webapi 由 3 层(服务、核心、dal)构建而成。

我的

问题是,当我尝试更改/创建/删除对象时,我的数据库不会更新,但 ef 中的 DBContext 会更新。因此,当我通过"api/user/1"使用放置请求调用我的 api 时,ef 会更新对象,但不将其提交到数据库。

奇怪的部分是,当我尝试通过单元测试更新对象时,数据库将更新。但是我直接调用控制器:UserController.Put(id,object)。

有人知道这怎么可能以及我如何解决这个问题吗?

编辑:代码

单元测试:

var _controller = new UserController();
var user = new User()
{
    Name = "userTest"
};
//Adding user through web -- Doesn't add to database
var _client = new RestClient("http://localhost");
RestRequest request = new RestRequest("api/User", Method.POST);
request.AddParameter("text/json", JsonConvert.SerializeObject(user), ParameterType.RequestBody);
IRestResponse response = _client.Execute(request);
//Adding user through controller -- Does add to database
_controller.Post(user);
var userData = (List<User>)_controller.Get();
Assert.IsNotNull(userData.Find(u => u.Naam == user.Naam));

用户控制器:

// POST api/User
public void Post([FromBody]T value)
{
    _service.Create(value);
}

用户服务:

public void Create(User value)
{
    var _repository = new UserRepository();
    var _mapper = new UserMapper();
    var newUser = _mapper.Map(value);
    _repository.Add(newUser);
    _repository.SaveChanges();
}

你使用依赖注入吗?如果是这样,请尝试找出是否存在差异。

相关内容

  • 没有找到相关文章

最新更新