在Xamarin Forms中找不到SQLite.Net-PCL的工作示例

时间:2016-11-22 22:23:50

标签: xamarin.forms sqlite.net

我似乎无法使用SQLite.Net-PCL离开死亡中心;我有一个带有PCL proj,Droid proj,iOS proj和Windows Universal项目的Xamarin表单解决方案。我已经为SQLite.Net-PCL和SQLite.Net.Core-PCL安装了nuget软件包。

所以,我转到github项目,找到一些很棒的例子来开始,但没有一个工作;显然你必须将一个平台传递到数据库连接,但我得到一个参考错误(例如SQLitePlatformWin32)。

在网上搜索参考资料,然后......没有。搜索nuget的平台和......没有。

我错过了什么? (是的,我觉得愚蠢)

他们的一个例子是

 public class Database : SQLiteConnection
{
    public Database(string path) : base(new SQLitePlatformWin32(), path)
    {
        CreateTable<Stock>();
        CreateTable<Valuation>();
    }}

我得到一个我无法在“新SQLitePlatformWin32”行上解决的引用错误。

1 个答案:

答案 0 :(得分:1)

对于其他任何挣扎的人来说,这就是你需要做的事情。

  • 安装SQLite.Net-PCL,SQLite.Net.Core-PCL和SQLite.Net.Async-PCL nugets
  • 在PCL中为ISQLite创建一个界面:

    public interface ISQLite { SQLiteConnection GetConnection(); }

  • 通过DependencyService调用GetConnection

    PatientDatabase = DependencyService.Get<ISQLite>().GetConnection(); PatientDatabase.CreateTable<Patient>();

  • 以上将根据您的平台(即android,ios)创建连接。在每个平台的项目中,您必须拥有可通过DependencyService访问的GetConnection,例如Android版本

    [assembly: Xamarin.Forms.Dependency(typeof(SQLite_Android))] // ... public class SQLite_Android : ISQLite { public SQLite_Android() { } public SQLite.Net.SQLiteConnection GetConnection() { var sqliteFilename = "TodoSQLite.db3"; string documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); // Documents folder var path = Path.Combine(documentsPath, sqliteFilename); // Create the connection var conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid(), path); // Return the database connection return conn; } }

我的问题是我试图在我的PCL中创建连接而我无法找到平台,您需要做的是在每个单独的项目中创建连接。