Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取多对多关系中所有实体的数据_Mysql_Asp.net Mvc_Entity Framework_Many To Many - Fatal编程技术网

Mysql 获取多对多关系中所有实体的数据

Mysql 获取多对多关系中所有实体的数据,mysql,asp.net-mvc,entity-framework,many-to-many,Mysql,Asp.net Mvc,Entity Framework,Many To Many,我的数据库有3个表客户,电影和客户电影是电影和客户之间的桥梁表现在,我想用他们租的电影来展示一个客户表。 我编写了一个函数来完成spesific id的工作(在代码8和代码9中)。我的问题是如何向所有实体显示数据 public ActionResult GetData() { MyDatabaseEntities2 db = new MyDatabaseEntities2(); var q = (from c in db.Customers

我的数据库有3个表客户,电影和客户电影是电影和客户之间的桥梁表现在,我想用他们租的电影来展示一个客户表。 我编写了一个函数来完成spesific id的工作(在代码8和代码9中)。我的问题是如何向所有实体显示数据

   public ActionResult GetData()
    {
        MyDatabaseEntities2 db = new MyDatabaseEntities2();
        var q = (from c in db.Customers
                 from Films in db.Films
                     where Films.FilmId == 8
                     where c.CustomerId == 9
                 select new
                 {
                     c.CustomerName,
                     c.Phone,
                     c.FilmId,
                     c.CustomerId,
                      FilmName = Films.FilmName

                 }).ToList();
        return Json(new { data = q }, JsonRequestBehavior.AllowGet);
    }
添加我的类

namespace MoviePro.Models
{
使用制度;
使用System.Collections.Generic;
大众电影
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,
“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共电影()
{
this.Customers=new HashSet();
}
public int FilmId{get;set;}
公共字符串FilmName{get;set;}
公共字符串长度{get;set;}
公共字符串类型{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,
“CA2227:征收财产应仅限于”)]
公共虚拟ICollection客户{get;set;}
}
}
公共部分类客户
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,
“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公众客户()
{
this.Films=new HashSet();
}
public int CustomerId{get;set;}
公共字符串CustomerName{get;set;}
公共字符串地址{get;set;}
公共字符串City{get;set;}
公共字符串电子邮件{get;set;}
公用字符串电话{get;set;}
公共可为空的FilmId{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,
“CA2227:征收财产应仅限于”)]
公共虚拟ICollection电影{get;set;}
}
}
非常感谢你

****有效的新代码****

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MoviePro.Models;
using System.Data.Entity;

namespace MoviePro.Controllers
{
public class CustomersController : Controller
{
    // GET: Customers
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult GetData()
    {
        MyDatabaseEntities2 db = new MyDatabaseEntities2();
        var q = (from c in db.Customers
                 from Films in c.Films
                 where Films.FilmId == Films.FilmId
                 where c.CustomerId == c.CustomerId
                 select new
                 {
                     c.CustomerName,
                     c.Phone,
                     c.FilmId,
                     c.CustomerId,
                     FilmName = Films.FilmName

                 }).ToList();
        return Json(new { data = q }, JsonRequestBehavior.AllowGet);
    }

    public ActionResult loaddata()
    {
        MyDatabaseEntities2 dc = new MyDatabaseEntities2();

        var customers = dc.Customers.Select(c => new
        {
            c.CustomerName,
            c.Phone,
            c.FilmId,
            c.CustomerId,


        });

        return Json(new { data = customers }, JsonRequestBehavior.AllowGet);

    }

    public ActionResult AddOrEdit(int id = 0)
    {
        if (id == 0)
            return View(new Customers());

        else
        {
            using (MyDatabaseEntities2 db = new MyDatabaseEntities2())
            {
                return View(db.Customers.Where(x => x.CustomerId== 
   id).FirstOrDefault<Customers>());

            }
        }
    }

    [HttpPost]
    public ActionResult AddOrEdit(Customers customer)
    {
        using (MyDatabaseEntities2 db = new MyDatabaseEntities2())
        {
            if (customer.CustomerId == 0)
            { 
                db.Customers.Add(customer);
                db.SaveChanges();
                return Json(new { success = true, message = "Saved 
      Successfully" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                db.Entry(customer).State = EntityState.Modified;
                db.SaveChanges();
                return Json(new { success = true, message = "Updated 
        Successfully" }, JsonRequestBehavior.AllowGet);
            }
        }


    }

    [HttpPost]
    public ActionResult Delete(int id)
    {
        using (MyDatabaseEntities2 db = new MyDatabaseEntities2())
        {
            Customers emp = db.Customers.Where(x => x.CustomerId == 
      id).FirstOrDefault<Customers>();

            db.Customers.Remove(emp);
            db.SaveChanges();
            return Json(new { success = true, message = "Deleted 
       Successfully" }, JsonRequestBehavior.AllowGet);
        }
        }
       }
       }
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用MoviePro.Models;
使用System.Data.Entity;
名称空间MoviePro.Controllers
{
公共类CustomerController:控制器
{
//获取:客户
公共行动结果索引()
{
返回视图();
}
公共操作结果GetData()
{
MyDatabaseEntities2 db=新建MyDatabaseEntities2();
var q=(来自数据库中的c)
来自c.电影中的电影
其中Films.FilmId==Films.FilmId
其中c.CustomerId==c.CustomerId
选择新的
{
c、 客户名称,
c、 电话,
c、 菲米德,
c、 客户ID,
FilmName=Films.FilmName
}).ToList();
返回Json(new{data=q},JsonRequestBehavior.AllowGet);
}
公共操作结果加载数据()
{
MyDatabaseEntities2 dc=新的MyDatabaseEntities2();
var customers=dc.customers.Select(c=>new
{
c、 客户名称,
c、 电话,
c、 菲米德,
c、 客户ID,
});
返回Json(新的{data=customers},JsonRequestBehavior.AllowGet);
}
公共操作结果AddOrEdit(int id=0)
{
如果(id==0)
返回视图(新客户());
其他的
{
使用(MyDatabaseEntities2 db=new MyDatabaseEntities2())
{
返回视图(db.Customers.Where(x=>x.CustomerId==
id).FirstOrDefault());
}
}
}
[HttpPost]
公共操作结果AddOrEdit(客户)
{
使用(MyDatabaseEntities2 db=new MyDatabaseEntities2())
{
如果(customer.CustomerId==0)
{ 
db.Customers.Add(客户);
db.SaveChanges();
返回Json(new{success=true,message=“Saved
成功“},JsonRequestBehavior.AllowGet);
}
其他的
{
db.Entry(customer.State=EntityState.Modified;
db.SaveChanges();
返回Json(new{success=true,message=“Updated
成功“},JsonRequestBehavior.AllowGet);
}
}
}
[HttpPost]
公共操作结果删除(int id)
{
使用(MyDatabaseEntities2 db=new MyDatabaseEntities2())
{
Customers emp=db.Customers.Where(x=>x.CustomerId==
id).FirstOrDefault();
db.Customers.Remove(emp);
db.SaveChanges();
返回Json(新的{success=true,message=“已删除
成功“},JsonRequestBehavior.AllowGet);
}
}
}
}

查询多对多关系的基本LINQ查询形状是:

来自数据库中的c客户
从f到c.胶片//不是db.胶片
选择新的
{
客户=c.客户名称,
Film=f.FilmName,
...
}
这是相当于
SelectMany
的查询语法。结果是一个扁平的数据列表,因此这通常被称为“扁平化”

通常,显示嵌套列表更有用:

来自数据库中的c客户
选择新的
{
c、 客户名称,
C
胶片=从f到c。胶片
选择新的
{
f、 电影名,
F
}
}

此查询显示一位客户和一部电影不一定相关。我希望你没有向这个客户收费<代码>客户应具有导航属性
电影
。那是你应该用的。如果您需要更多帮助,我们需要查看您的类。您好,我添加了我的数据库的图片和代码。谢谢你,我现在有不同的问题,当我按“添加新客户”时,我填写了详细信息,但在浏览器中看不到实体,但在数据库中它已更新。我应该如何更改addoredit函数?我添加了代码对不起,这是一个全新的问题。请发布一个新问题,以便您可以提供所有必要的详细信息来回答它。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MoviePro.Models;
using System.Data.Entity;

namespace MoviePro.Controllers
{
public class CustomersController : Controller
{
    // GET: Customers
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult GetData()
    {
        MyDatabaseEntities2 db = new MyDatabaseEntities2();
        var q = (from c in db.Customers
                 from Films in c.Films
                 where Films.FilmId == Films.FilmId
                 where c.CustomerId == c.CustomerId
                 select new
                 {
                     c.CustomerName,
                     c.Phone,
                     c.FilmId,
                     c.CustomerId,
                     FilmName = Films.FilmName

                 }).ToList();
        return Json(new { data = q }, JsonRequestBehavior.AllowGet);
    }

    public ActionResult loaddata()
    {
        MyDatabaseEntities2 dc = new MyDatabaseEntities2();

        var customers = dc.Customers.Select(c => new
        {
            c.CustomerName,
            c.Phone,
            c.FilmId,
            c.CustomerId,


        });

        return Json(new { data = customers }, JsonRequestBehavior.AllowGet);

    }

    public ActionResult AddOrEdit(int id = 0)
    {
        if (id == 0)
            return View(new Customers());

        else
        {
            using (MyDatabaseEntities2 db = new MyDatabaseEntities2())
            {
                return View(db.Customers.Where(x => x.CustomerId== 
   id).FirstOrDefault<Customers>());

            }
        }
    }

    [HttpPost]
    public ActionResult AddOrEdit(Customers customer)
    {
        using (MyDatabaseEntities2 db = new MyDatabaseEntities2())
        {
            if (customer.CustomerId == 0)
            { 
                db.Customers.Add(customer);
                db.SaveChanges();
                return Json(new { success = true, message = "Saved 
      Successfully" }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                db.Entry(customer).State = EntityState.Modified;
                db.SaveChanges();
                return Json(new { success = true, message = "Updated 
        Successfully" }, JsonRequestBehavior.AllowGet);
            }
        }


    }

    [HttpPost]
    public ActionResult Delete(int id)
    {
        using (MyDatabaseEntities2 db = new MyDatabaseEntities2())
        {
            Customers emp = db.Customers.Where(x => x.CustomerId == 
      id).FirstOrDefault<Customers>();

            db.Customers.Remove(emp);
            db.SaveChanges();
            return Json(new { success = true, message = "Deleted 
       Successfully" }, JsonRequestBehavior.AllowGet);
        }
        }
       }
       }