MvcMusicStore の例で Entity Framework の代わりに Fluent NHibernate を使用しようとしていますが、Create ビューを使用して新しいアルバムを作成する際に ArtistId と GenreId を入力する際に問題が発生しています。他のオブジェクトを参照しているという事実と関係があると思います
私のアルバムマップは:
public class AlbumMap:ClassMap<Album>
{
public AlbumMap()
{
Id(x => x.AlbumId);
Map(x => x.AlbumArtUrl);
References(x => x.Artist).Cascade.All().Column("ArtistId");
References(x => x.Genre).Cascade.All().Column("GenreId");
Map(x => x.Price);
Map(x => x.Title);
}
}
コントローラーの Create メソッドは次のようになります。
public ActionResult Create()
{
MusicRepository repository = new MusicRepository();
ViewBag.ArtistId = new SelectList(repository.GetArtists(), "ArtistId", "Name");
ViewBag.GenreId = new SelectList(repository.GetGenres(), "GenreId", "Name");
return View();
}
私が問題を抱えている作成ビューの部分は次のとおりです。
<div class="editor-label">
@Html.LabelFor(model => model.Genre, "Genre")
</div>
<div class="editor-field">
@Html.DropDownList("GenreId", String.Empty)
@Html.ValidationMessageFor(model => model.Genre)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Artist, "Artist")
</div>
<div class="editor-field">
@Html.DropDownList("ArtistId", String.Empty)
@Html.ValidationMessageFor(model => model.Artist)
</div>
データベースでは、新しいアルバムを作成した後、Title や AlbumUrl などの他のフィールドが入力されますが、ArtistId と GenreId は null に設定されます。