EntityFramework Core 5 无法连接到 SQL Server 2008

问题描述

我在 ubuntu 21.04 上安装了 dotnet core 5。我用 VS Code 创建了一个 webapi 项目,并设法顺利运行。

我在项目中安装了 EF5 并尝试连接到 sql Server 2008

数据库上下文

using Microsoft.EntityFrameworkCore;

namespace Models
{
    public partial class Banco : DbContext
    {
        public virtual DbSet<Cliente> Cliente { get; set; }
        public Banco() : base()
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UsesqlServer("Server=<<servidor>>; Database=<<banco>>; User Id=<<user>>; Password=<<senha>>;");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {

            modelBuilder.Entity<Models.Cliente>()
                .HasKey(c => new { c.codcli });

        }

    }

}

模型

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Models
{
    public partial class Cliente
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int codcli { get; set; }

        public string nomcli { get; set; }

    }
}

控制器

using Microsoft.AspNetCore.Mvc;
using System.Linq;
using System.Data.sqlClient;
using System;

namespace dotnetc_webapi.Controllers
{
    [ApiController]
    [Route("")]
    public class DefaultController : ControllerBase
    {
        [HttpGet]
        public dynamic Get()
        {
            Models.Banco banco = new Models.Banco();
            var cliente = banco.Cliente.Take(10).Select(cli => cli).ToArray();
            return new OkObjectResult(cliente);

        }
    }
}

当使用命令 dotnet watch run 运行项目时,它会打开浏览器,并在尝试连接银行时显示以下错误

sqlException: A connection was successfully established with the server,but then an error occurred during the pre-login handshake. (provider: SSL Provider,error: 31 - Encryption(ssl/tls) handshake Failed)

在线:var cliente = banco.Cliente.Take(10).Select(cli => cli).ToArray();

我觉得奇怪的是,如果我在没有任何代码更改的情况下使用同一个项目并在 Windows 10 中运行,它可以连接到数据库并正常接收来自客户端的数据,而不是在 ubuntu 中。

我已经尝试过这些程序

https://docs.microsoft.com/en-us/dotnet/core/compatibility/cryptography/5.0/default-cipher-suites-for-tls-on-linux

我不知道这是不是正确的方法,或者我遗漏了什么。

我只是因为这个项目而依赖Windows,因此我必须使用VM来运行Windows。我很想解决这个问题,只是使用 linux。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)