0

私はC#開発に不慣れで、いくつか質問があります。どうぞよろしくお願いします。

多対多に関連する2つのエンティティ(映画とジャンル)があります。すべての映画をdatagridViewに表示する必要があります。ここで、movies.genresには、listBoxGenresで選択されたジャンルが含まれています。

私はこのコードを試します:

moviesDBEntities myContext = new moviesDBEntities();

var myQuery = from movie in myContext.Movies
               where movie.genre.Contains(ListBoxGenres.SelectedItem)
               select movie;


dgvMovies.Datasource = myQuery.ToList();

問題は、次のような例外エラーを受け取ることです。

「タイプ'System.Object'の定数値を作成できません。このコンテキストでは、プリミティブ型('Int32、String、Guid'など)のみがサポートされています。」

ご協力いただきありがとうございます

4

2 に答える 2

0

ListBoxGenres.SelectedItemたとえば、のプロパティを使用します。ListBoxGenres.SelectedItem.Value

var myQuery = from movie in myContext.Movies
              where movie.genre.Contains(ListBoxGenres.SelectedItem.Value)
              select movie;
于 2013-03-06T20:28:56.530 に答える
0

ここを参照してください。

クエリでエンティティなどの非スカラー変数を参照することはサポートされていません。このようなクエリが実行されると、NotSupportedException例外がスローされ、「EntityType型の定数値を作成できません。このコンテキストではプリミティブ型(「Int32、String、Guid」など)のみがサポートされます」というメッセージが表示されます。

スカラー変数を使用するようにクエリを言い換えてみてください(ここでは、GenreエンティティのPKがIdであると想定しています)。

var myQuery = from movie in myContext.Movies
          where movie.genre.Any(g=>g.Id == ((Genre)listBox.SelectedItem).Id)
          select movie;
于 2013-03-06T20:29:56.360 に答える