1

BookCategoryの2つのテーブルがあります。

------------- --------------
| 本| | カテゴリ|
------------- --------------
| Id | | Id |
| CategoryId | | カテゴリ名|
|タイトル| ---------------
|説明|
------------

私はエンティティフレームワークを使用してデータベースからデータを取得し、次のように表示に戻りました。

コントローラ

using (var db = new BookEntities()){
     return View(db.Book.ToList())
} 

ブックテーブルのすべてのデータを表示できますが、CategoryIdを表示する代わりにCategory名を表示する方法がわかりません。

Asp.netmvc4とエンティティフレームワークは初めてです。

私を助けてください。ありがとう

4

4 に答える 4

1

最初にビューモデルを作成します

public class BookViewModel
{
    public int id;
    public int Title;
    public int Description;
    public Category Category;
}

public class Category
{
    public int CategoryId;
    public string CategoryName;
}

あなたのlinqクエリでこれを試してください。

public List<BookViewModel> GetList()
{
    var books = db.Book
               .select(b=> new BookViewModel()
               {
                   id = b.id,
                   Title = b.Title,
                   Description = b.Description,
                   Category = b.Category
               });
       return books.ToList<BookViewModel>();
}

さて、あなたのビューでは、ページの上部に次のように表示されます。

@model IEnumerable<BookViewModel>

そして、次のようにアクセスできます。

@foreach(var item in Model)
{
   <h1>@item.Category.CategoryName</h1>
}
于 2013-02-21T06:33:29.033 に答える
1

Book のモデル定義内で、関連する Category レコードを表すオブジェクトを次のように定義できます。

public virtual Category Category{ get; set; }

CategoryId が FK として構成されていることを確認してください。その後、CategoryName を取得できますBook.Category.CategoryName

于 2013-02-21T04:00:29.990 に答える
0

最初にデータベース テーブルから始めて、EF にモデルを作成させましたか? その場合、データベース内の 2 つのテーブル間に外部キー関係があってはなりません。

それ以外の場合、これはビューとして完全に機能するはずです:

@using NamespaceOfBookModel
@model IList<Book>
@foreach (var book in Model)
{
    @book.Title
    @book.Category.CategoryName
}
于 2013-02-21T05:04:15.973 に答える