我的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();
}
答案 0 :(得分:0)
你使用依赖注入吗?如果是这样,请尝试查找是否存在差异。