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 查询结果集

多张表:

复制代码
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方便

缺点:join多张表的情景,代码冗长

替代方法:创建数据库视图,对视图进行EF查询

 

posted @   北平123  阅读(480)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示