counter
counter

注意 linq to entity 连表查询

1.连表的时候 获取两个表中的字段,在其中一个表对应的实体类中添加另外一个表中需要的字段即可。类与数据库中的字段并不一定一一对应。

2. var a=... select new   类名 {}  ,两个表在同一个edmx文件中,按照一二的话,返回该类,或者返回 var b= ....select  {} ,进行迭代输出。但b是什么类型呢?IEnmurable类型的泛型集合?

3. 如果联合查询的两个表不在同一个上下文呢,即两个表在不同的edmx文件中,怎么关联呢?

  一种做法:在业务逻辑层对根据条件返回的泛型集合或指定类型对象进行筛选。第二种:是否可以新建一个实体,对应两个表,用codefirst中Fluent API,或两个表建立视图?然后。。。

4.下面是linq to sql 的第一种做法

  public static IQueryable<Project> GetAll()
        {
           
var result =from a in myDcFmDataContext.FmBankDetail
                        
join b in myDcFmDataContext.FmBusiness
                        
on a.BankDetailID equals b.BankDetailID
                        
join c in myDcFmDataContext.FmBusinessDetail
                        
on b.BusinessID equals c.BusinessID
                        
where c.FromTable.Trim() =="FLOW_EDM_OPR"
                        
select new Project
                         {
                             BankDetailChequeNo
= a.BankDetailChequeNo,
                             BankDetailDate
= a.BankDetailDate,
                             BankDetailVoucher
= a.BankDetailVoucher,
                             BankDetailRemark
= a.BankDetailRemark,
                             BusinessDetailSum
= c.BusinessDetailSum,
                             FromID
= c.FromID
                         };
           
foreach (var r in result)
            {
               
var p = (from a in myDcProjectDataContext.FLOW_EDM_OPR
                        
where r.FromID == a.ID
                        
select a).FirstOrDefault();
                r.QTY
= p.QTY.Value;
                r.PRICE
= p.PRICE.Value;

            }

  public class Project
    {
       
public Project()
        {
           
//
           
//TODO: 在此处添加构造函数逻辑
           
//
        }
       
public string BankDetailChequeNo { get; set; }
       
public DateTime BankDetailDate { get; set; }
       
public string BankDetailVoucher { get; set; }
       
public string BankDetailRemark { get; set; }
       
public decimal BusinessDetailSum { get; set; }
       
public int FromID { get; set; }
       
public int QTY { get; set; }
       
public double PRICE { get; set; }
    }

           
return result;

posted @ 2012-08-10 10:54  bfy  阅读(1572)  评论(0编辑  收藏  举报