1

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();
}
4

1 に答える 1

0

依存性注入を使用していますか? もしそうなら、違いがあるかどうかを見つけてみてください。

于 2013-09-20T13:39:55.140 に答える