解决.NET Core 2.0+ 使用SQLite出现异常"unable to open database file"

错误内容:

如在项目中使用sqlite,连接字符串为:DataSource=Weather.db,在Asp.NET Core 中有如下错误 .net core SqliteException: SQLite Error 14: 'unable to open database file'在.Net Core Console App中可能会报错No Such Table 'xxx',可能都是sqlite连接字符串的相对路径未被识别导致的

解决方案:

一、最简单的办法,把路径设置为绝对路径即可如:“C:/xx/xx/xx/Weather.db”,不过这样一来就缺乏灵活性,接下来有更好的办法。

二、使用使用.net core sdk提供的默认使用SQLite的项目模板创建一个项目,命令如下:

创建模板,-au Individual表示使用身份验证,-uld是使用Local DB,如果参数是False,则使用SQLite,如果为True,则使用SQL Server LocalDB

dotnet new mvc -au Individual -uld false --name SQLiteCore

该项目中也是使用的相对路径DataSource=app.db,但是却没有这个错误,通过和VS创建的项目进行对比,发现项目的startup.cs和program.cs均无特殊设置,但是.csproj文件多了一个配置,如下:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <UserSecretsId>aspnet-SQLiteCore-EEF36315-16B4-44B9-AFBD-0041D5170A86</UserSecretsId>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>
  
  <!-- 加上这个ItemGroup即可,把Update的值设为你自己的sqlite数据库文件名,后面的值不变 -->
  <ItemGroup>
    <None Update="app.db" CopyToOutputDirectory="PreserveNewest" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.1" />
  </ItemGroup>

</Project>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值