.net6.0 EFCore 连接 SqlServer的一些问题

最近需要连接外部的SqlServer 查询了一些答案发现有很多一样但就是连不上,分享一个我能连上方法

通过Json读取连接信息
"ConnectionStrings": {
    "DbConnectionString": "Data Source=.;Database=SqlDB;User ID=SqlDB2022;Pwd=SqlDB2022;MultipleActiveResultSets=True"
  }
private IConfigurationRoot _configurationRoot;
var connectStrings= _configurationRoot.GetConnectionString("DbConnectionString");

DBContext的设置

这里有一点要提醒 EFCore6.0之后通过视图查询数据没有DBQuery.ToView了,直接可以DBSet.ToView查询视图,如果是表就ToTable

internal class ACCOUNTSDbContext : DbContext
{
    public vwAP_ACCOUNTSDbContext(DbContextOptions<vwAP_ACCOUNTSDbContext> options)
        : base(options)
    {
    }

    public vwAP_ACCOUNTSDbContext()
    {
    }

    public DbSet<ACCOUNTS> ACCOUNTS { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(connectStrings);
    }


    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ACCOUNTS>().ToView("ACCOUNTS");
    }
}
此时我们可以测试是否可以查出数据了

查询视图我们会有一个问题就是可能查出的多条数据都是重复的,这里我们要禁用EFCore的跟踪缓存 在后面加上AsNoTracking(),这样子我们就可以查多不同的信息了

public static List<ACCOUNTS> GetACCOUNTSDbContextBySQLServer(this string Account_NUMBER)
{
     ServiceCollection _GlobalServiceCollection = MainWindow.GlobalServiceCollection;//这里不用管 是我的全局Server
     var sp = _GlobalServiceCollection.BuildServiceProvider();

     List<ACCOUNTS>? fields;
     using (ACCOUNTSDbContext? db = sp.GetService<ACCOUNTSDbContext>())
     {
         fields = db.ACCOUNTS.AsNoTracking().Where<ACCOUNTS>(c => c.ACCOUNT_NUMBER == Account_NUMBER).ToList();
     }

     return fields ?? null;
 }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值