gpt4 book ai didi

sqlite - Mono.Data.Sqlite.SqliteConnection 需要一个没有意义的 'System' 版本

转载 作者:行者123 更新时间:2023-12-03 18:55:44 30 4
gpt4 key购买 nike

我们的 Sqlite PCL 项目有问题。

问题

1) 任何引用 Mono.Data.Sqlite.SqliteConnection 的地方显示以下错误。

Module 'System, Version 4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' should be referenced.



2) 任何试图使用 File.Exists 的东西显示编译器错误

Cannot resolve symbol 'File'



详情

我们正在使用 .NET 可移植子集 158
  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile158\

  • 我们已经包括
  • Mono.Data.Sqlite
  • C:\Program Files (x86)\Mono-3.2.3\lib\mono\4.5\Mono.Data.Sqlite.dll
  • 系统数据
  • C:\Program Files (x86)\Mono-3.2.3\lib\mono\4.5\System.Data.dll

  • 我不知道从这里去哪里。

    这是一个包含 SqliteConnection 问题的类文件
    using System;
    using Mono.Data.Sqlite;

    namespace OurApplication.AppCore.Data.Sqlite
    {
    public class DbConnectionProvider : IDbConnectionProvider
    {
    private readonly string _connectionString;

    public DbConnectionProvider(string sqliteDatabasePath, string databaseName)
    {
    // the sqliteDatabasePath is hard coded in 'Data.Sqlite.DbProvider'
    // _sqliteDatabasePath = "{0}.sqlite3";
    _connectionString = string.Format("Data Source=" + sqliteDatabasePath, databaseName);
    }

    public SqliteConnection GetOpenConnection()
    {
    var connection = new SqliteConnection(_connectionString);
    if (connection == null) throw new Exception("Could not create a database connection.");

    connection.Open();

    return connection;
    }
    }
    }

    Gist with more code examples

    如果这种方法不可行,我愿意接受其他选择。我正在研究 Sqlite.Net,但对于自定义 DbReader 等,API 并没有真正做到我想要的。

    我也对 Stuart Lodge 感兴趣的 MvvmCross Sqlite东西,但真的不知道如何整合平台特定的优点。老实说,我什至无法弄清楚如何执行参数化查询。

    如果我能弄清楚的话,我认为我的偏好是使用 MvvmCross-SQLite。

    作为引用,这就是我们的解决方案的结构。
  • OurApplication.App.Droid
  • OurApplication.AppCore
  • OurApplication.AppCore.Data.Sqlite(这是我正在从事的项目。)
  • OurApplication.AppCore.Data.SqlServer
  • 最佳答案

    对于不可移植的 API,MvvmCross 通常在 PCL 内提供接口(interface),并在每个平台上实现平台特定的实现。

    使用的模式称为“插件”——但实际上这些只是 IoC 容器顶部的一个简单层。您可以在以下位置查看更多信息:

  • N=31 视频教程 - http://mvvmcross.wordpress.com - http://slodge.blogspot.co.uk/2013/06/n31-injection-platform-specific.html
  • 维基 - https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins

  • 对于 File.Exists , MvvmCross 提供了 IMvxFileStore api - 见 https://github.com/MvvmCross/MvvmCross/blob/v3/Plugins/Cirrious/File/Cirrious.MvvmCross.Plugins.File/IMvxFileStore.cs

    对于 SQLite MvvmCross 已经包装了 SQLite-net 库。
  • 最初的尝试是在 https://github.com/MvvmCross/MvvmCross/tree/v3/Plugins/Cirrious/Sqlite 中。并且基于 2012 年早期版本的 SQLite-net。在 http://mvvmcross.wordpress.com 中的 N-10 中提供了一个视频介绍。 .该项目现在已被标记为过时,只是因为我不打算对其进行任何更新。
  • 可移植 SQLite-net 的较新尝试已放入其自己的存储库中,以允许更多人为其做出贡献,而不会混淆主要的 MvvmCross 存储库。它在 https://github.com/MvvmCross/MvvmCross-Sqlite - 它基于最新的 SQLite-net(2013 年末),由@jarroda 分为接口(interface)和非接口(interface)部分。来自 http://mvvmcross.wordpress.com 的相同 N-10 视频介绍也应该与这个项目一起工作 - 只是使用不同的命名空间。

    这个源目前在我稳定的 WinRT/WP7/Xamarin VS2012 环境中运行并且构建良好。 future 几周将进行更改,以解决最新的 Xamarin 和 Microsoft PCL 更改强制对 MvvmCross 进行的更改。恐怕没有人可以帮助“吐出错误”——这不是一个任何人都可以真正帮助的技术术语。

  • 我最近看到的 SQLite-net 至少还有一个其他 PCL 改编版本——但目前我找不到指向该版本的链接。

    关于sqlite - Mono.Data.Sqlite.SqliteConnection 需要一个没有意义的 'System' 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20054093/

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