我似乎无法使用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”行上解决的引用错误。
答案 0 :(得分:1)
对于其他任何挣扎的人来说,这就是你需要做的事情。
在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中创建连接而我无法找到平台,您需要做的是在每个单独的项目中创建连接。