asp.net webapi プロジェクトに問題があります。Oracle データベースとの接続に ODP.NET を使用しています。私の webapi は、3 つのレイヤー (サービス、コア、ダル) から構築されています。
私の問題は、オブジェクトを変更/作成/削除しようとしているときにデータベースが更新されないことですが、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();
}