gpt4 book ai didi

c# - 无法找到 Net Core NHibernate System.Data.SQLite

转载 作者:行者123 更新时间:2023-12-05 02:15:42 26 4
gpt4 key购买 nike

我正在 Net Core 2.0 上编写控制台应用程序。我的应用程序使用 NHibernate Fluent 来处理 SQLite 本地数据库。

这是我配置 NHibernate 的方式:

public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;

public static ISession OpenSession()
{
var dbConnectionString = @"Data Source=|DataDirectory|\TestDb.sqlite;Version=3;Password=;Foreign Keys=True;Page Size=1024";

_sessionFactory = Fluently.Configure().Database(SQLiteConfiguration.Standard.ConnectionString(dbConnectionString)
.ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateHelper>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(true, true))
.BuildSessionFactory();

return _sessionFactory.OpenSession();
}

public static void CloseSession()
{
_sessionFactory.Close();
_sessionFactory.Dispose();
}
}

当我尝试构建配置时,我收到一个异常: enter image description here

我添加了以下来自 Nuget 的引用:

  • 流利的 NHibernate (2.1.2)
  • N 休眠 (5.1.3)
  • System.Data.SQLite (1.0.108)

我的本​​地数据库是使用 SQLite Studio 和数据库类型 = System.Data.SQLite 创建的。

我做错了什么?也许我使用了错误的提供商?

最佳答案

我找到了解决方案。


第 1 步 在您的项目中使用包 [System.Data.SQLite.Core 1.0.109]。

第 2 步 下载包 [System.Data.SQLite.Core 1.0.109.1]。

第 3 步 将 [System.Data.SQLite 1.0.109.1] 包中的 [runtimes] 文件夹复制到您的项目文件夹,并遵循文件映射。

[package]  -->  [project folder]
runtimes/win-x86/lib/netstandard2.0/SQLite.Interop.dll --> runtimes/win-x86/native/SQLite.Interop.dll
runtimes/win-x64/lib/netstandard2.0/SQLite.Interop.dll --> runtimes/win-x64/native/SQLite.Interop.dll
runtimes/linux-x64/lib/netstandard2.0/SQLite.Interop.dll --> runtimes/linux-x64/native/SQLite.Interop.dll
runtimes/osx-x64/lib/netstandard2.0/SQLite.Interop.dll --> runtimes/osx-x64/native/SQLite.Interop.dll

那么您的 *.csproj 文件应该包含以下内容。

<ItemGroup>
<None Update="runtimes\linux-x64\native\SQLite.Interop.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="runtimes\osx-x64\native\SQLite.Interop.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="runtimes\win-x64\native\SQLite.Interop.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="runtimes\win-x86\native\nssm.exe">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="runtimes\win-x86\native\SQLite.Interop.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

第 4 步只需构建并运行您的应用程序。

PS:原因包[System.Data.SQLite.Core 1.0.109]未列出,您应该通过修改*.csproj来使用包[System.Data.SQLite.Core 1.0.109]用文本编辑器编辑文件。

关于c# - 无法找到 Net Core NHibernate System.Data.SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51445371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com