EF join

兩張表:數據庫

var query = db.Categories         // 第一張表
   .Join(db.CategoryMaps,         // 第二張表
      c => c.CategoryId,          // 主鍵
      cm => cm.ChildCategoryId,   // 外鍵
      (c, cm) => new { Category = c, CategoryMap = cm }) // 關聯後的結果對象集
   .Select(x => x.Category);  // select 查詢結果集

多張表:spa

var fullEntries = dbContext.tbl_EntryPoint  //第一張表
    .Join(
        dbContext.tbl_Entry,          //第二張表
        entryPoint => entryPoint.EID,
        entry => entry.EID,
        (entryPoint, entry) => new { entryPoint, entry }
    )
    .Join(
        dbContext.tbl_Title,          //第三張表
        combinedEntry => combinedEntry.entry.TID,
        title => title.TID,
        (combinedEntry, title) => new 
        {
            UID = combinedEntry.entry.OwnerUID,
            TID = combinedEntry.entry.TID,
            EID = combinedEntry.entryPoint.EID,
            Title = title.Title
        }
    )
    .Where(fullEntry => fullEntry.UID == user.UID)
    .OrderBy(p=>p.UID)
    .Take(10);

優勢:coding方便code

缺點:join多張表的情景,代碼冗長對象

替代方法:建立數據庫視圖,對視圖進行EF查詢blog

相關文章
相關標籤/搜索