1

我有两个表,BookCategory

------------- --------------
| 书 | | 类别 |
------------- --------------
|标识 | | 身份证 |
|类别 ID | | 类别名称|
|标题 | ---------------
|说明|
------------

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

控制器

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

我可以在书表中显示所有数据,但我不知道如何显示类别名称而不是显示 CategoryId。

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

请帮我。谢谢

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。然后,您可以使用 CategoryNameBook.Category.CategoryName

于 2013-02-21T04:00:29.990 回答
0

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

否则,这应该与您的观点一样完美:

@using NamespaceOfBookModel
@model IList<Book>
@foreach (var book in Model)
{
    @book.Title
    @book.Category.CategoryName
}
于 2013-02-21T05:04:15.973 回答
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;
            }
}
}
于 2019-06-18T06:36:00.207 回答