asp.net使用EntityFramework在html中显示联接的表
本文关键字:显示 html net 使用 EntityFramework asp | 更新日期: 2023-09-27 18:26:04
我完成了这个asp.net教程。
最后我有两个模型和两个脚手架项目。
模型作者
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace ContosoBooks.Models
{
public class Author
{
[ScaffoldColumn(false)]
public int AuthorID { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "First Name")]
public string FirstMidName { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
}
模型书
using System.ComponentModel.DataAnnotations;
namespace ContosoBooks.Models
{
public class Book
{
[ScaffoldColumn(false)]
public int BookID { get; set; }
[Required]
public string Title { get; set; }
public int Year { get; set; }
[Range(1, 500)]
public decimal Price { get; set; }
public string Genre { get; set; }
[ScaffoldColumn(false)]
public int AuthorID { get; set; }
// Navigation property
public virtual Author Author { get; set; }
}
}
现在,我想通过AuthorID将这两个表连接起来,并在主视图中简单地显示我的一个合并表。
最简单的方法是什么?
一个选项是使用LINQ连接这两个模型类,将合并后的Result获取到名为mergedResultViewModel的自定义视图模型对象列表中。以下代码中的TestDBContext是EF的dbContext。
var query = from au in TestDBContext.Authors join bk in TestDBContext.Books on au.AuthorID equals bk.AuthorID
select new MergedResultViewModel { au.AuthorID, au.FirstMidName, bk.BookID, bk.Title, bk.Year, bk.Price, bk.Genre }
var mergedResultViewModel = query.ToList();
MergedResultViewModel类型可以在代码文件中定义如下。
public class MergedResultViewModel
{
public int AuthorID { get; set; }
public string FirstMidName { get; set; }
public int BookID { get; set; }
public string Title { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
public string Genre { get; set; }
}