2014-09-13 71 views
0

我有两张表Employee和Permenent表。 permenet表是员工 的ISA表下面是两个表WCF linq从多个表中查询

create table employees(

employee_no varchar(5), 
name varchar(50), 
nic varchar(10), 
address varchar(100), 
designation varchar(20), 

Land varchar(10), 
Mobile varchar(10), 
constraint pkemployees primary key(employee_no), 
constraint fkemployees foreign key(land,mobile) references telephone) 


create table permenenet(

username varchar(20), 
password varchar(10), 
password_hint varchar(50), 
employee_no varchar(5), 
constraint fkpermenet foreign key(employee_no) references employees, 
constraint pkpermenet primary key(employee_no). 

我已创建WCF服务,以获取名称和指定

public List<employee>get_name(string uname){ 
       var resl = (from per in dc.permenenets 
       join emp in dc.employees on per.employee_no equals emp.employee_no 
       where per.username == uname && per.employee_no == emp.employee_no 
       select emp); 
    return resl.ToList(); 
    } 

,但是当我与WCF客户端测试的架构或从WPF应用程序获取数据我得到空答案。帮助表示赞赏

回答

1
  1. 部分&& per.employee_no == emp.employee_no是没有必要的,因为你已经加入这个条件。
  2. 此外,您还只选择了permenenets,它们的username完全等于uname,因此它会生成与per.username = @uname类似的SQL,但不会生成per.username LIKE @uname。如果你不寻求完全匹配,那么将不得不使用SqlMethods.Like或其他东西。
  3. 检查某处值resl.ToString()(即通过设置断点并使用监视)并尝试直接对SQL Server运行生成的查询,并将该参数替换为uname值并查看是否得到任何结果。