2011-10-21 20 views
1

私はここにいくつか読んだことがある:http://www.asp.net/mvc/tutorials/mvc-music-store-part-4を、彼らが持っている理由のアルバムのクラスでは、いくつかのスタックASP.NET MVC 2つのモデルをリンクする方法 - 説明が必要ですか?

namespace MvcMusicStore.Models 
{ 
    public class Artist 
    { 
     public int ArtistId { get; set; } 
     public string Name { get; set; } 
    } 
} 
namespace MvcMusicStore.Models 
{ 
    public class Album 
    { 
     public int  AlbumId  { get; set; } 
     public int  GenreId  { get; set; } 
     public int  ArtistId { get; set; } 
     public string Title  { get; set; } 
     public decimal Price  { get; set; } 
     public string AlbumArtUrl { get; set; } 
     public Genre Genre  { get; set; } 
     public Artist Artist  { get; set; } 
    } 
} 
namespace MvcMusicStore.Models 
{ 
    public partial class Genre 
    { 
     public int  GenreId  { get; set; } 
     public string Name  { get; set; } 
     public string Description { get; set; } 
     public List<Album> Albums { get; set; } 
    } 
} 

を設定します。

public Genre Genre  { get; set; } 
public Artist Artist  { get; set; } 

そして、彼らが持っている理由ジャンルクラス、中:

 public List<Album> Albums { get; set; } 

私はこれらのフィールドを持つ理由を説明できますか?

答えて

2

プロパティは、各オブジェクトのリンクされたオブジェクトへのアクセスを提供し、同様にあなたがpublic List<Album> Albumsプロパティを使用して、ジャンルにリンクされているアルバムを反復処理でき

var GenreName = album.Genre.Name 
var ArtistName = album.Artist.Name 

を - 彼らは私たちのようなコードで物事を行うことができます。 Entityフレームワークは、オブジェクトの必要なリンクプロパティをデータベースからの関連データに設定します。リンクされたプロパティデータは、エンティティフレームワークコードがどのように呼び出されるかに応じて、即座にまたは遅延してロードできます。ここでは例として

は機能が Albumデータが Genre情報が引かれると同時に、データベースから引き出されることを保証し、特定のジャンルにリンクされているアルバムを引き出すいくつかのコードは、 Include関数が呼び出されている様子がわかります -

public ActionResult Browse(string genre) 
{ 
    // Retrieve Genre and its Associated Albums from database 
    var genreModel = storeDB.Genres.Include("Albums") 
     .Single(g => g.Name == genre); 

    return View(genreModel); 
} 
+0

あなたはどの程度「公共の一覧アルバム」私を伝えることができ、私はので、多分それはコードの考えですが、私はC#に新たなんだ、1ジャンルは多くのアルバムを持っていることがわかり... – nvcnvn

+0

それはそうです.1つのジャンルは多くのアルバムを持ち、 'List 'はそのジャンルのすべてのアルバムを保持します。アルバムは1つの「ジャンル」プロパティと1つの「アーティスト」プロパティを持ち、各アルバムは1つのアーティストとジャンルのみを持っているためです。 – ipr101

1

完全論理。 各アルバムには、ジャンルとアーティストを聴くことができます。これは、IDとの名前を持っている、おそらくデータベース内のテーブルにマッピングするために行われる

public class Artist 
{ 
    public int ArtistId { get; set; } 
    public string Name { get; set; } 

}

:ので、彼は、この両方のジャンルやアーティスト 例のカスタムオブジェクトを作成しましたアーティスト。ジャンルのように

一覧 用として、彼は彼が使用しているオブジェクトのジャンル内でアルバムのオブジェクトのリストをdecaredなぜそれがthatsの内側にロックなどのジャンルごとに複数のアルバムを持っている... 彼はジャンルにオブジェクトアルバムのリストを追加し、多分1対多の関係としてそれらをデータベースに保存することができます。 彼はより良いアルバムIDのIDのリストを保存できたかもしれませんが、完全なロジックがわからないかもしれません

関連する問題