私はUserというエンティティオブジェクトを使用しています。エンティティオブジェクトを変更するとデータベースに保存されますが、.netで取得すると変更が反映されません
public void saveUser(User user){
if (user.EntityState == System.Data.EntityState.Detached)
this._db.Users.Attach(user); // attach to the context
this._db.ObjectStateManager.ChangeObjectState(user, System.Data.EntityState.Modified);
this._db.SaveChanges();
}
このエンティティは、エンティティデータモデルデザイナーで作成されました:これは私が(リポジトリ内)を保存するために使用する機能です。これはビュー(私はモデルとしてエンティティオブジェクトを使用しています)によって変更され、セーブコールは私のコントローラによって行われます。
ユーザーを編集すると、変更内容はデータベースに保存されますが、ビューには古いプロパティが表示されます。プログラムを再起動すると、正しいプロパティ値が表示されます。これは私がリポジトリからオブジェクトを取得しています方法です
:
public IQueryable<User> GetUsers(String user_name)
{
IQueryable<User> userquery = from u in _db.Users
where u.user_name == user_name
select u ;
return userquery;
}
コントローラ:私は簡潔にするため、例外とエラーチェックコードの一部を残し
public ActionResult ManageUser(String user_name)
{
IQueryable<User> users = this.users_db.getUsers(user_name);
User user = users.First();
return View(user);
}
[HttpPost]
public ActionResult ManageUser(User user){
this.users_db.saveUser(model.user);
ViewBag.message="Success";
return View(user);
}
。
コントローラの外観はどうですか? –
コントローラー機能を追加しました。ありがとう。 – James