ASP.NET MVC 5实体加入

本文关键字:实体 NET MVC ASP | 更新日期: 2023-09-27 17:59:07

我是ASP、Entity和lambda表达式的新手。我怎样才能把两张桌子连在一起?

路线模型:

public partial class Route
{
    public Route()
    {
        Flights = new HashSet<Flight>();
    }
    public int RouteID { get; set; }
    public int DepartureAirportID { get; set; }
    public int ArrivalAirportID { get; set; }
    public int FlightDuration { get; set; }
    public virtual Airport Airport { get; set; }
    public virtual Airport Airport1 { get; set; }
    public virtual ICollection<Flight> Flights { get; set; }
}

机场型号:

public partial class Airport
{
    public Airport()
    {
        Routes = new HashSet<Route>();
        Routes1 = new HashSet<Route>();
    }
    public int AirportID { get; set; }
    public string City { get; set; }
    public string Code { get; set; }
    public virtual ICollection<Route> Routes { get; set; }
    public virtual ICollection<Route> Routes1 { get; set; }
}

SQL查询如下所示:

SELECT a.AirportID, a.City
FROM Route r INNER JOIN Airport a ON r.ArrivalAirportID = a.AirportID
WHERE r.DepartureAirportID = @departureAirportID
ORDER BY a.City

很抱歉这个简单的问题,但我不知道如何使用实体框架。。。

ASP.NET MVC 5实体加入

应该用一个硬编码的变量做这样的事情(未经测试,只是从查询中进行):

using (var db = new YourDbContext())
{
    var query = from r in db.Route
                join a in db.Airport a on r.ArrivalAirportID equals a.AirportID
                where r.DepartureAirportID = 1 // replace with your varialble.
                orderby a.City
                select a;
}

包含在联接实体框架中。这里的doctorSendAnswerModel也是一个内部表。

 var data = _patientaskquestionRepository.Table.Include(x=>x.DoctorSendAnswer).Join(_patientRepository.Table, a => a.PatientId, d => d.Id, (a, d) => new { d = d, a = a }).Where(x => x.a.DoctorId == doctorid);
         if(!string.IsNullOrEmpty(status))
          data=data.Where(x=>x.a.Status==status);
          var result = data.Select(x => new {x= x.a,y=x.d }).ToList();
          var dt = result.Select(x => new PatientAskQuestionModel()
          {
              PatientId = x.x.PatientId.Value,
              AskQuestion = x.x.AskQuestion,
              Id = x.x.Id,
              DoctorId = x.x.DoctorId,
              FileAttachment1Url = x.x.FileAttachment1,
              DocName = x.y.FirstName + " " + x.y.LastName,
              CreatedDate = x.x.CreatedDate.Value,
              doctorSendAnswerModel = x.x.DoctorSendAnswer.Select(t => new DoctorSendAnswerModel { Answer = t.Answer }).ToList()
          }).ToList();

          return dt;

LinQ查询:

from r in context.Route
join  a in context.Airport 
on r.ArrivalAirportID equals a.AirportID
WHERE r.DepartureAirportID = "value"
ORDER BY a.City
select a.AirportID, a.City
var balance = (from a in context.Airport 
               join c in context.Route on a.ArrivalAirportID equals c.AirportID
               where c.DepartureAirportID == @departureAirportID
               select a.AirportID)
              .SingleOrDefault();

您可以执行以下操作:

var matches = from a in context.Airports
              join r in context.Routes 
                  on a.AirportID equals r.ArrivalAirportID
              where r.DepartureAirportID = departureAirportID
              order by a.City
              select new
              {
                  a.AirportID,
                  a.City
              };

带有带分页的条件联接的实体查询。

  if (pageIndex <= 0)
            pageIndex = 1;
        pageIndex = ((pageIndex - 1) * pageSize) ;
        var patient = _patientRepository.Table.Join(_DoctorPatient.Table.Where(x => x.DoctorId == Id && x.IsBlocked==false), x => x.Id, d => d.PatientId, (x, d) => new { x = x });
        if (state != "")
            patient = patient.Where(x => x.x.State.Contains(state));
        if (name != "")
            patient = patient.Where(x => (x.x.FirstName + x.x.LastName).Contains(name));

        if (sdate != null)
            patient = patient.Where(x => x.x.CreatedDate >= sdate);
        if (eDate != null)
            patient = patient.Where(x => x.x.CreatedDate <= eDate);
        var result = patient.Select(x => x.x).Select(x => new PatientDoctorVM() { PatientId = x.Id, Id = x.Id, FirstName = x.FirstName, LastName = x.LastName, SSN = x.NewSSNNo, UserProfileId = x.UserProfileId, Email = x.Email, TumbImagePath = x.TumbImagePath }).OrderBy(x => x.Id).Skip(pageIndex).Take(pageSize).ToList();

您的实体和lembda查询将大致如下:

  return (from d in _doctorRepository.Table 
       join p in _patientDoctor.Table on d.Id equals p.DoctorId 
      where p.PatientId == patientid.Value select d
       ).ToList();

看看这个网站,它将向您解释联接在Linq中是如何工作的。因此,如果你再次需要它,你将能够自己解决它。