欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

asp.net mvc 三层加EF两表联查 asp.net 实现两表联查 有大用 有大大用

asp.net mvc 三层加EF两表联查

首先打开vs软件
新建项目
创建web中的mvc项目
再右击解决方案创建类库项目
分别创建DAL层和BLL层再把DAL层和BLL层的类重命名
在mvc项目中的Models文件夹创建model类
在DAL创建ADO.NET实体数据模型后把DAL层中App.Config文件中的链接字符串复制到mvc项目的Web.config文件中

ADO.NET实体数据模型


DAL层中的类开始打代码

复制代码
 /// <summary>
        /// 两表联查
        /// </summary>
        /// <returns></returns>
        public static List<dynamic> biao()
        {
            using (KaoshiEntities db = new KaoshiEntities())
            {
                var sql = from s in db.Student
                          join c in db.Bang on s.ID equals c.Bid
                          select new
                          {
                              s.Name,
                              s.passwork,
                              c.BName
                          };
                List<dynamic> li = new List<dynamic>();
                foreach (var item in sql.ToList())
                {
                    dynamic d = new ExpandoObject();
                    d.name = item.Name;
                    d.pwd = item.passwork;
                    d.Bname = item.BName;
                    li.Add(d);
                }
                return li;
            }
        }
复制代码

BLL层

复制代码
 /// <summary>
        /// 两表联查
        /// </summary>
        /// <returns></returns>
        public static List<dynamic> biao()
        {
            try
            {
                return KaoshiDAL.kaoshidal.biao();
            }
            catch (Exception ex)
            {
                
                throw ex;
            }
        }
复制代码

mvc项目中的Models文件夹的model类

复制代码
 /// <summary>
        /// 两表联查
        /// </summary>
        /// <returns></returns>
        public static List<dynamic> biao()
        {
            try
            {
                return KaoshiBLL.kaoshibll.biao();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
复制代码

在mvc项目中的Controllers文件夹创建Home控制器

复制代码
 /// <summary>
        /// 两表联查
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            List<dynamic> li =kaoshiModel.biao();
            return View(li);
        }
复制代码

Index视图

复制代码
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<table style="width: 40%;" border="1">
    <tr>
        <th>姓名</th>
        <th>密码</th>
        <th>班级</th>
    </tr>
    @foreach (var item in Model)
    {
    <tr>
        <td>@item.name</td>
        <td>@item.pwd</td>
        <td>@item.Bname</td>
    </tr>
      }
</table>
复制代码

 

分类: 我的原创

来自  https://www.cnblogs.com/zuozhaoquan/p/10582729.html



asp.net mvc 遍历linq to sql 多表联查

两张表:  班级表和学生表: 最终想获得学生的姓名、密码、性别、年龄、住址、爱好、班级名称、班级所学方向

var temp=from a in _db.student
                       join b in _db.classes
                           on a.c_id equals b.id
                       select
                           new 
                           {
                               Id=a.id,
                               Name = a.name,
                               Pwd = a.pwd,
                               Sex = a.sex,
                               Age = a.age,
                               Address = a.address,
                               Hobby = a.hobby,
                               StuName = b.name,
                               Direction = b.direction

                           };  使用linq to sql来实现多表联查,问题就出来了,这里是推动类型,前台怎么绑定是个问题 那么是否可以创建一个类,包含这些字段呢?

 public class Stu
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Pwd { get; set; }
        public bool? Sex { get; set; }
        public int? Age { get; set; }
        public string Address { get; set; }
        public string Hobby { get; set; }
        public string StuName { get; set; }
        public string Direction { get; set; }

    } 然后在多表联查的时候select new Stu(){} 具体代码:

var temp=from a in _db.student
                       join b in _db.classes
                           on a.c_id equals b.id
                       select
                           new Stu()
                           {
                               Id=a.id,
                               Name = a.name,
                               Pwd = a.pwd,
                               Sex = a.sex,
                               Age = a.age,
                               Address = a.address,
                               Hobby = a.hobby,
                               StuName = b.name,
                               Direction = b.direction

                           };  这样就可以返回一个IQueryable.ElementType{Name="Stu",FullName="项目名称.Models.Stu"} 然后在 ViewData.Model = temp.ToList(); 这样就转换为IEnumerable<COOL.Models.Stu>  在view视图里面加上 @model IEnumerable<COOL.Models.Stu>   @foreach (var item in Model)进行遍历即可 效果:  呈上Controller完整代码:

public class HomeController : Controller
    {
       readonly StudentDataContext _db=new StudentDataContext();
        // GET: /Home/
        public ActionResult Index()
        {
          var temp=from a in _db.student
                       join b in _db.classes
                           on a.c_id equals b.id
                       select
                           new Stu()
                           {
                               Id=a.id,
                               Name = a.name,
                               Pwd = a.pwd,
                               Sex = a.sex,
                               Age = a.age,
                               Address = a.address,
                               Hobby = a.hobby,
                               StuName = b.name,
                               Direction = b.direction
                           };
            ViewData.Model = temp.ToList();
            
            return View();
        }
 
    }
view 视图的完整代码:
@model IEnumerable<COOL.Models.Stu>
@using System.Collections
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <title>Index</title>
</head>
<body>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    <table border="1" cellpadding="0" cellspacing="0">
        <tr>
            <th></th>
            <th>
                姓名
            </th>
            <th>
                密码
            </th>
            <th>
                性别
            </th>
            <th>
                年龄
            </th>
            <th>
                住址
            </th>
            <th>
                爱好
            </th>
            <th>
                班级名称
            </th>
            <th>
                专业方向
            </th>
        </tr>
    
    @foreach (var item in Model) {
        <tr>
            <td>
  @*              @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
                @Html.ActionLink("Details", "Details", new { id=item.Id }) |
                @Html.ActionLink("Delete", "Delete", new { id=item.Id })*@
            </td>
            <td>
                @item.Name
            </td>
            <td>
                @item.Pwd
            </td>
            <td>
                @(item.Sex==true?"男":"女")
            </td>
            <td>
                @item.Age
            </td>
            <td>
                @item.Address
            </td>
            <td>
                @item.Hobby
            </td>
            <td>
                @item.StuName
            </td>
            <td>
                @item.Direction
            </td>
        </tr>
    }
    
    </table>
</body>
</html>
no pains, no gains
分类: ASP.NET MVC

来自  https://www.cnblogs.com/jiangyongyawen/p/4241350.html


普通分类: