Mysql 获取多对多关系中所有实体的数据
我的数据库有3个表客户,电影和客户电影是电影和客户之间的桥梁表现在,我想用他们租的电影来展示一个客户表。 我编写了一个函数来完成spesific id的工作(在代码8和代码9中)。我的问题是如何向所有实体显示数据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
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);
}
}
}
}