Oracle db不会通过web api更新,但db将通过单元测试更新

时间:2013-09-20 10:24:03

标签: asp.net-web-api oracle11g odp.net

我的asp.net webapi项目出了问题。 我正在使用ODP.NET连接Oracle数据库。 我的webapi是由3层(服务,核心,dal)构建的。

我的问题是,当我尝试更改/创建/删除对象时,我的数据库不会更新,但是ef中的DBContext将会更新。 因此,当我通过“api / user / 1”使用put请求调用我的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));

UserController中:

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

UserService:

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

    _repository.Add(newUser);
    _repository.SaveChanges();
}

1 个答案:

答案 0 :(得分:0)

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