首页 > 其他分享 >net-core(EF Core)-使用表达式树还是委托

net-core(EF Core)-使用表达式树还是委托

时间:2023-05-29 22:00:10浏览次数:43  
标签:core set Core EF Microsoft Address using get public

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

public class MemberConfig : IEntityTypeConfiguration<Member>
{
    public void Configure(EntityTypeBuilder<Member> builder)
    {
        builder.ToTable("T_Member").HasKey(k => k.Id);

        builder.Property(c => c.Address).HasMaxLength(255);
        builder.Property(c => c.E_mail).HasMaxLength(100);
    }

}
public class Member{
    public int Id{get;set;}
    public string E_mail{get;set;}
    public string Name{get;set;}
    public string Address{get;set;}
}
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Console;

public class MyDbContext : DbContext
{

    public DbSet<Member> members { get; set; } // 
    public static readonly ILoggerFactory consoleLoggerFactory
          = LoggerFactory.Create(config=>config.AddConsole());

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);
        var serverVersion = new MySqlServerVersion(new Version(8, 0, 27));
        optionsBuilder
           .UseMySql(
            "Server=127.0.0.1;port=3306;Database=YBDDataBase;uid=root;pwd=ybdai930728;Character Set=utf8;"
           , serverVersion)
           //.UseLoggerFactory(consoleLoggerFactory);
           .LogTo(Console.WriteLine, LogLevel.Information)
           .EnableSensitiveDataLogging()
           .EnableDetailedErrors();
    }
    // 这个是不能少的。
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
    }
}

如果是web项目

builder.Services.AddDbContext<MemberDbContext>();

关于使用表达式和委托的区别:

Expression<Func<Member,bool>> a1 = (c) =>  c.Address.Contains("q");

Func<Member,bool> f1 = (c) => c.Address.Contains("q");

using var db = new MyDbContext();
var s = db.members.Where(a1); 
var s2 = db.members.Where(f1);
System.Console.WriteLine("hello world!");

两者生成的sql如下:

Expression:
SELECT `t`.`Id`, `t`.`Address`, `t`.`E_mail`, `t`.`Name`
      FROM `T_Member` AS `t`
      WHERE `t`.`Address` LIKE '%q%'
Func:
SELECT `t`.`Id`, `t`.`Address`, `t`.`E_mail`, `t`.`Name`
      FROM `T_Member` AS `t`

 

标签:core,set,Core,EF,Microsoft,Address,using,get,public
From: https://www.cnblogs.com/Insist-Y/p/17441782.html

相关文章

  • Codeforces Round 875 (Div
    CodeforcesRound875(Div.2)C-D题解CProblem-C-Codeforces我们发现题述所形成的父亲节点一定比子节点先画出,并且如果子节点顺序在父节点后面,则父,子节点为同一个周期加入。反之,则子节点的周期为父节点+1。所以做法考虑树上dp,维护第i个节点加入树的周期。转移方程如下:\[......
  • Codeforces Round 875 (Div. 2)
    Preface难得现场打一次,这天下午打了三个半小时的校内赛,然后八点打了两小时ARC,最后再接上两个半小时的CF真是爽歪歪不过有一说一其实很多时候都在坐牢,这场CF也差不多,一个小时写完ABCD然后开始坐牢,其实E基本想出来了但是没想到用随机赋值的方法来实现不过由于这场手很稳因此排名......
  • netcore-http
    https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-6.0 //Addservicestothecontainer.builder.Services.AddHttpClient();publicclassBasicModel:PageModel{privatereadonlyIHttpClientFactory_httpClient......
  • Codeforces Round 874 (Div. 3)
    A.MusicalPuzzle#include<bits/stdc++.h>usingnamespacestd;voidsolve(){intn;strings;cin>>n>>s;set<string>cnt;for(inti=0;i+1<n;i++)cnt.insert(s.substr(i,2));......
  • UEFI升级固件版本
    uefi可以升级bios版本,也可以升级一些扩展卡的fw版本,方便实用。 1、 开机按提示进入bios,将boot启动项中的EFIShell设置为第一启动项,保存,重启;也可以启动的时候根据提示进入启动项管理界面,选择EFIShell启动。 2、 将升级文件解压之后拷进U盘,将U盘插入机器USB口,第一步......
  • Avalonia通过ef操作sqlite
    首选我们建个MVVM模板的项目,在项目中引入包Microsoft.EntityFrameworkCore.Sqlite1、创建实体publicclassTodoEntity{publicGuidId{get;set;}publicstringThing{get;set;}publicDateTimeCreateTime{get;set;}}2、创建上下文ubliccl......
  • 【Quectel】EC20CEFHLG-128-SNNS物联网 LTE Cat 4 无线通信模块
    产品介绍:EC20是移远通信推出的LTE模块,采用LTE3GPPRel.9技术,支持下行速率100Mbps和上行速率50Mbps,同时在封装上兼容移远通信UMTS/HSPA+UC20模块,实现了从3G网络向4G网络轻松平滑过渡。EC20系列模块包含EC20-A,EC20-C和EC20-E三个版本,使其能够向后兼容现存的EDGE和GSM/GPRS网络,以......
  • NETCORE - Swagger配置
    NETCORE-Swagger配置 环境:WebApiNET6  配置输出文档,项目右键-> 属性-> 生成-> 输出 勾选“生成包含API文档的文件”维护生成文件名称。  2.Program.cs中的修改把原来的 builder.Services.AddSwaggerGen();  修改成:builder.Services.AddSwagge......
  • Codeforces Round 875 (Div. 2) A-D
    CodeforcesRound875(Div.2)A.TwinPermutationsinta[N];voidsolve(){intn=read();for(inti=1;i<=n;i++)a[i]=read();for(inti=1;i<=n;i++)cout<<n+1-a[i]<<'';cout<<'\n';//puts(ans&g......
  • 如何将word公式粘贴到SiteFactory里面
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法。其原理为一下步骤:监听粘贴事件;【用于插入图片】获取光标位置;【......