2017-12-19 14 views
-2

アクションごとに実行して、BookViewsという名前のintフィールドの1単位を増やしたいとします。アクションに呼び出されるたびにintに追加されますか?

マイ処置:

[HttpGet] 
public IActionResult BookDetails(int id) 
{ 
    MultiModels model = new MultiModels(); 
    model.UserListed = (from u in _userManager.Users orderby u.Id descending select u).Take(10).ToList(); 


     using (var db = _iServiceProvider.GetRequiredService<ApplicationDbContext>()) 
     { 
      var result = from b in db.books where (b.BookId == id) select b; 

      if (result.Count() != 0) 
      { 
       ///error occure here 
       db.books.Update((from b in db.books where b.BookId == id select b.BookViews) + 1)); 
       db.SaveChanges(); 
      } 
     } 

     return View(model); 
    } 

しかし、私のコードのgetエラー。どのように私はBookViewsフィールド1を1ランごとに増やしてデータベースで更新できますか?

+1

どのようなエラーが報告されましたか?例外をポストし、例外のスローされた行は – Steve

+0

です。 UPDATE Book SET BookViews = BookViews + 1 WHERE ID = @id – Steve

+0

@Steveいいえ、最初にコードを使用します。entityFramework – saeed

答えて

2

、読みたい本を検索してみあなたのBookViewsをインクリメントし、その後SaveChanges()を呼び出します。

var currentBook = result.ToList().FirstOrDefault(); 

if(currentBook != null){ 

    currentBook.BookViews++; 

    db.Books.Attach(currentBook); 
    //Changing the State 
    db.Entry(currentBook).State = EntityState.Modified; 

    db.SaveChanges(); 
} 

編集

よりespecificもしてみてください、私たちはあなたを助けるためにしようとしてrealltされているが、私はできませんあなたが説明していない場合、あなたが得ているか、あなたのコードのvariblesが何をしているかを推測してください...

+0

この行には 'result.BookViews ++ 'というエラーがあります ' result'は 'BookViews'の定義を含んでいません – saeed

+0

' result''とは何ですか? –

+0

これは質問テキスト – saeed

関連する問題