.netCore读取配置文件里的sqlserver连接字符串

文章介绍了如何在C#应用中通过配置文件存储连接字符串,并利用依赖注入和构造函数来获取连接字符串。ConfigService类从IConfiguration接口读取名为ConnectionString:LMSDB的配置项,然后在LMSDbContext中使用这个字符串配置SQLServer数据库。
摘要由CSDN通过智能技术生成

连接字符串:

"ConnectionString": {
    "LMSDB": "Server=.;Database=Logistics;Trusted_Connection=True;"
  },

读取字符串内容:

通过依赖注入,构造函数注入的方式定义一个configuration接口,注意连接字符串的名字要匹配

private Microsoft.Extensions.Configuration.IConfiguration _configuration;
        public ConfigService(Microsoft.Extensions.Configuration.IConfiguration configuration)
        {
            _configuration = configuration;    
        }
        public string GetConnectionString() 
        {
            return _configuration["ConnectionString:LMSDB"];
        }

读取配置文件的内容用UseSqlServer生成数据库

public partial class LMSDbContext{

         public LMSDbContext(ConfigService configService) 
        {
                    m_connectionString = configService.GetConnectionString();
        }
         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
                    optionsBuilder.UseSqlServer(m_connectionString);
                    base.OnConfiguring(optionsBuilder);
        }

}

.Net Core 3.1 的 Web API 在尝试连接到 SQL Server 数据库并启用 Globalization (国际化) 模式时可能会遇到错误,因为默认情况下,.NET Core 环境并不支持完全的 globalization 功能,特别是当涉及到数据库连接时。 当开启 invariant globalization mode,即固定语言环境模式,比如 `CultureInfo.InvariantCulture` 或 `.Net.Core.Globalization.Invariant`,这可能导致一些预期之外的行为,尤其是在处理字符串长度、日期格式等方面。SQL Server 需要统一的语言环境,而 invariant 模式下的一些操作可能不符合 SQL 标准规范。 解决这个问题的一般步骤包括: 1. **关闭 globalization invariance**:在项目配置文件(通常是 `appsettings.json`)中,可以设置 ` globalization:invariantCulture=false` 来禁用 invariant culture。例如: ``` " globalization": { " invariantCulture": false } ``` 2. **明确指定数据库连接的文化信息**:如果你确实需要特定文化环境,可以创建一个自定义的文化对象,并传递给 `DbContext` 构造函数: ```csharp var culture = new CultureInfo("en-US"); services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), sqlServerOptionsAction: opt => opt.UseSnakeCaseNaming()) .UseCulture(culture)); ``` 3. **处理异常**:确保在代码中捕获和处理可能出现的因 globalization 引发的问题,比如数据类型转换或字符串比较的错误。 如果以上步骤无法解决问题,检查 SQL Server 是否有兼容 .NET Core globalization 设置,以及数据库查询是否需要特殊处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值