无法找到Net Core NHibernate System.Data.SQLite

问题描述 投票:0回答:1

我正在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的以下参考资料:

  • FluentNHibernate(2.1.2)
  • NHibernate(5.1.3)
  • System.Data.SQLite(1.0.108)

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

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

c# sqlite nhibernate .net-core
1个回答
1
投票

我找到了解决方案。


步骤1在项目中使用package [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:casue包[System.Data.SQLite.Core 1.0.109]不公开,你应该使用package [System.Data.SQLite.Core 1.0.109]通过修改* .csproj文件和文本编辑器。

© www.soinside.com 2019 - 2024. All rights reserved.