Asp.net mvc4和Entity框架,显示Name而不是显示两个相关表的Id

时间:2013-02-21 03:37:23

标签: asp.net-mvc entity-framework-4

我有两个表,预订类别

-------------               --------------
|   book    |               |   Category  |
-------------                --------------
|Id         |               | Id          |
|CategoryId |               | CategoryName|
|Title      |               ---------------
|Description|
------------

我使用实体框架从数据库中获取数据并返回视图,如下所示:

控制器

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

我可以在book表中显示所有数据,但我不知道如何显示Category name而不是显示CategoryId。

我是Asp.net mvc4和实体框架的新手。

请帮帮我。 感谢

4 个答案:

答案 0 :(得分:1)

在Book的模型定义中,您可以定义一个表示相关类别记录的对象,如下所示:

public virtual Category Category{ get; set; }

确保将CategoryId配置为FK。然后,您可以使用Book.Category.CategoryName

获取CategoryName

答案 1 :(得分: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>
}

答案 2 :(得分:0)

您是先开始使用数据库表,然后让EF创建模型吗?如果是这样,则两个表之间的数据库中不能存在外键关系。

否则这应该完全符合您的观点:

@using NamespaceOfBookModel
@model IList<Book>
@foreach (var book in Model)
{
    @book.Title
    @book.Category.CategoryName
}

答案 3 :(得分:0)

查看(.Cshtml)

<tr>
<td>@TradingHR.Repository.Repo.GetTeamMemberName(item.IdMember)</td>
</tr>

-在回购中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Web;


namespace TradingHR.Repository
{
public class Repo {

public static string GetTeamMemberName(long idMemeber)
            {
                DBEntities db = new DBEntities();
                var value = (from c in db.Mi_TeamMember
                             where c.Id == idMemeber
                             select c.Name.FirstOrDefault();
                return value;
            }
}
}