1

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

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

1 回答 1

0

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

于 2013-09-20T13:39:55.140 回答