2012-04-14 13 views
0

作成したEntity Frameworkがあります。新しい曲と新しいアルバムをテーブルに追加しようとしています。たとえば、新しい曲を追加しようとすると、私は以下の方法を使用して、s.Artist.ArtistNameの "オブジェクト参照がオブジェクトのインスタンスに設定されていません"と伝えます。私はドロップダウンメニューでアーティストのリストを表示するウェブフォームを持っています。そして今、私はそのアーティストのために新しい曲を追加したいと思います。それ、どうやったら出来るの?ナビゲーションプロパティを使用してテーブルにデータをロードする

public Song AddNewSongNav(String ArtistName, String SongName) 
{ 
    using (var context = new MyEntities()) 
    { 
     var s = new Song(); 
     s.SongTitle = SongName; 
     s.Artist.ArtistName = ArtistName; 
     s.Artist.WikipediaUrl="http://en.wikipedia.org/Testing"; 

     context.Songs.AddObject(s); 
     context.SaveChanges(); 
     return s; 
    } 
} 

アーティストテーブルのフレームワークにはArtistID、ArtistName、WikiPediaURLがあります。それはアルバムと歌のためのナビゲーションプロパティを持っています。ソングには1対1、アルバムは1対多にリンクされています。

これには、SongID、SongTitle、Artist_ArtistIDを持つSongテーブルがあります。それはアーティストとアルバムのナビゲーションプロパティを持っています。これは、アルバムテーブルに多対多としてリンクされています。

最後にアルバムテーブルには、AlbumID、AlbumTitle、CoverArt、Year、Genre、MimeType、Artist_ArtistIDがあります。それはArtistとSongのナビゲーションプロパティを持っています。

答えて

0

アーティストプロパティが自動的に作成されていません - あなたは、最初のアーティストのインスタンスを作成する必要があります。あなたの迅速な対応のための

var s = new Song(); 
    s.SongTitle = SongName; 
    s.Artist = new Artist(); 
    s.Artist.ArtistName = artistName; 
+0

感謝を。それで私は新しいアーティストと曲を一緒に追加することができました。私がしようとしているのは、ユーザーがドロップダウンリストからアーティストを選択できるようにしてから、そのアーティストと曲を関連付けることです。上記を行うと、新しいアーティストが作成され、その曲と関連付けられます。既にテーブルに入っているアーティストをどのように参照して、それを新しい曲に関連付けるか考えていますか? – Joe24

関連する問題