从2表asp.net web api获取详细信息

时间:2016-09-06 06:40:38

标签: c# asp.net-mvc database asp.net-web-api

我正在创建一个网络API。我有两张桌子

Employee_details

SlNo      Employeeid        R_ID
 1         2022             AC1
 2         2023             AC2

Id_details

SlNo        R_ID            L_ID
 1          AC1             L001
 2          AC1             L002
 3          AC1             L003
 4          AC2             L004
 5          AC2             L005

我使用RESTful服务创建了一个web api。我需要获取特定Employeeid的所有L_ID。例如,如果我请求employeeid 2022,我应该得到L001 L002和L003。请帮帮我。我首先使用代码创建表并启用迁移

代码

模型类

Employee_details.cs

public class Employee_details
{
   public int slNo {get; set;}
   public string Employeeid  {get; set;}
   public string R_ID  {get; set;}

   //Navigation
   public Id_details Id_details{get; set;}
}

Id_details.cs

public class Id_details
{
   public int slNo {get; set;}
   public string R_ID  {get; set;}
   public string  L_ID {get; set;}

}

控制器

 public IQueryable<Employee_id> Getdetails(string employeeid )
    {
       return db.Employee_details
           .Where(b => b.Employeeid.Equals(employeeid, StringComparison.OrdinalIgnoreCase)).Include(c => c.Id_details);

    }

由于表2中的R_ID字段不是主键,因此我没有进行外键引用。

1 个答案:

答案 0 :(得分:0)

如果使用Native SQL,则此查询是您的返回数据。

  SELECT ID.L_ID    
      FROM Id_details AS ID   
     INNER JOIN Employee_details ED 
        ON ID.R_ID =  ED.R_ID  
     WHERE ED.Employeeid = '2022'

或者如果您使用EntitiyFramework

此查询返回equel R_ID记录,然后设置Employee_details条件

var res = db.Id_details.Join(db.Employee_details, x => x.R_ID , y => y.R_ID , (x, y) => x).ToList();

或者您可以选择containsList

中的任何R_ID
var conditionList =db.Employee_details.where(p=>p.Employeeid.equals('2022')).select(p=>p.R_ID);

然后使用conditionList search

设置条件
  db.Id_details.where(p=> conditionList.contains(p.R_ID)).select ( ... );