私は長い間 Web フォームの専門家でしたが、ASP.NET MVC プログラミングに移行する時が来たと思います。
MVC の研究中に、音楽ストアを作成するこの例に出くわしました。事前定義されたデータをデータベースに入力する必要があるセクション 4 までは、すべて問題ありませんでした。それを達成しようとしていたとき、私は問題を抱えていました。どうやら問題は、プロパティとして Author および Genre 型を持つ Album Model オブジェクトを、Entity Framework Code-first アプローチを使用して localDB に書き込もうとしたときに発生したようです。
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-4
Album クラス構造に問題があるようです。チュートリアルの Album クラスには 2 つの複雑な型があります。
public Genre Genre { get; set; }
public Artist Artist { get; set; }
以下のように dbcontext に記録しようとしても、何も起こりません。データは書き込まれません:(SampleData.cs のコード)
var albums = new List<Album>
{
new Album { Title = "Worlds", Genre = genres.Single(g => g.Name == "Rock"), Price = 8.99M,Artist = artists.Single(a => a.Name == "Accept"),BookArtUrl = "/Content/Images/placeholder.gif"
}
};
foreach (var al in albums)
{
context.Albums.Add(al);
}
しかし、Album クラスの複合型を文字列に変更すると、次のようになります。
public string Genre { get; set; }
public string Artist { get; set; }
以下のように記録できます:(SampleData.csのコード)
var albums = new List<Album>
{
new Album { Title = "Worlds", Genre = (genres.Single(g => g.Name == "Rock")).ToString(), Price = 8.99M,Artist = (artists.Single(a => a.Name == "Accept")).ToString(),BookArtUrl = "/Content/Images/placeholder.gif"
}
};
foreach (var al in albums)
{
context.Albums.Add(al);
}
チュートリアルではなぜ機能したのかわかりませんが、私の演習では機能しませんでした。
どんな助けでも大歓迎です。