2016-05-05 9 views
1
[HttpPost] 
    public ActionResult RemoveCollaborationEntry(int collaborationEntryID = 0) 
    { 
     using (var collaborationEntriesContext = new CollaborationEntryContext()) 
     { 
      collaborationEntriesContext.Collaborations.Remove(
       collaborationEntriesContext.Collaborations.ElementAtOrDefault(collaborationEntryID)); 

      collaborationEntriesContext.SaveChanges();    
     } 

     return RedirectToAction(nameof(Index)); 
    } 

このメソッドが呼び出された場合、例外がtorwnさ:ASP.NET MVC EntityFramework:ActionResultコントローラメソッド内でLINQを使用する方法は?

エンティティへのLINQメソッド を認識しない「annaBevzenkoPortfolioMVC.AboutMe.CollaborationEntry ElementAtOrDefault [CollaborationEntry](System.Linq.IQueryable`1 [annaBevzenkoPortfolioMVC.AboutMe.CollaborationEntry]、 Int32) 'メソッドであり、このメソッドをストア 式に変換することはできません。

私はかなりエンティティに新しいです。誰かが私を助けることができますか?

+0

は、それが拡張メソッド 'ElementAtOrDefault'を見つけることができるので、あなたは' System.Linq'名前空間に持ち込むことを確認してください:

あなたは以下のコードを実行してFindメソッドを使用する必要があります。 –

+0

@BradleyUffner私はそれを確認しました。それに問題はありません... – 52hertz

+1

ElementAtOrDefaultの代わりに.Whereを使用してください – nurdyguy

答えて

3

Entity FramewokはSQLへの変換方法を知らないため、以下のクエリメソッドElementAtOrDefaultを照会してください。

collaborationEntriesContext.Collaborations.Find(collaborationEntryID) 
+0

本当に?このリンクhttp://www.entityframeworktutorial.net/crud-operation-in-connected-scenario-entity-framework.aspxを検討してください。 ElementAt(int)を使用した例があります。 – 52hertz

+0

しかし、この命令 'studentList.ElementAt (0)'はDbSetにないLinq TO ObjectsのstudentListに適用されます :) – CodeNotFound

+0

'var studentList = context.Students.ToList ();' sudentListはObjectのコレクションですないとDbSet ()ToList()のため – CodeNotFound

関連する問題