在EF中实现左联接

当使用EF中的dbset进行join操作的时候如果,如果表之间没有关联关系的话,生成的sql语句是 inner join(inner join 和 left join的区别 就不在这阐述了),eg:

var user = await (from u in this.context.MUser.Where(sa => sa.Id == pid)
                  join uw in this.context.MUserWechat on u.Id equals uw.UserID 
                  select new MVUserBaseInfo
                  {
                      ID = u.Id,
                      CreateTime = u.CreateTime,
                      HeadImage = u.HeadImage,
                      Phone = u.Phone,
                      UserName = u.UserName,
                      WechatBindStatus = uwti.WechatBindStatus,
                      WechatSystem = uwti.WechatSystem,
                      WechatUser = uwti.WechatUser,
                      NickName = uwti.NickName ?? string.Empty
                  }).FirstOrDefaultAsync();

这样相当于就是将MUser和MUserWechat 进行了inner join, 如果我们希望进行左连接的话可以借助DefaultIfEmpty() 来达到当联接的表为空的时候,生成一条空的数据,从而达到左联接的效果,eg:

var user = await (from u in this.context.MUser.Where(sa => sa.Id == pid)
                  join uw in this.context.MUserWechat on u.Id equals uw.UserID into uwt
                  from uwti in uwt.DefaultIfEmpty() // 变成left join
                  select new MVUserBaseInfo
                  {
                      ID = u.Id,
                      CreateTime = u.CreateTime,
                      HeadImage = u.HeadImage,
                      Phone = u.Phone,
                      UserName = u.UserName,
                      WechatBindStatus = uwti.WechatBindStatus,
                      WechatSystem = uwti.WechatSystem,
                      WechatUser = uwti.WechatUser,
                      NickName = uwti.NickName ?? string.Empty
                  }).FirstOrDefaultAsync();

转载于:https://www.cnblogs.com/PenZ/p/10315946.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在.NET Core 6.0使用Entity Framework(EF)的Database First方式配置连接并进行实战是很简单的。 首先,确保你的项目已经安装了相应的NuGet包,包括`Microsoft.EntityFrameworkCore.Tools`和`Microsoft.EntityFrameworkCore.SqlServer`(如果你使用SQL Server作为数据库)。 接下来,打开终端或命令提示符窗口,进入你的项目文件夹,并执行以下命令来生成EF的模型类: ``` dotnet ef dbcontext scaffold "YourConnectionString" Microsoft.EntityFrameworkCore.SqlServer -o Models ``` 在这个命令,你需要将"YourConnectionString"替换为你的数据库连接字符串。该命令将自动生成EF的模型类,并将其放在`Models`文件夹。 完成上述步骤后,你就可以在代码使用这些生成的模型类来与数据库进行交互了。例如,你可以编写以下代码来获取数据库的数据: ```csharp using System; using System.Linq; using Microsoft.EntityFrameworkCore; using YourProject.Models; // 替换为你生成的模型类所在的命名空间 namespace YourProject { class Program { static void Main(string[] args) { using (var context = new YourDbContext()) // 替换为你生成的DbContext类的名称 { var data = context.YourTableName.ToList(); // 替换为你数据库的表名称 foreach (var item in data) { Console.WriteLine(item.PropertyName); // 替换为你表的属性名称 } } } } } ``` 以上代码演示了如何通过使用生成的模型类和DbContext类来查询数据库的数据。 这就是在.NET Core 6.0使用EF的Database First方式配置连接并进行实战的简单过程。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值