2016-11-22 3 views
0

Я не могу выйти из мертвой точки с помощью SQLite.Net-PCL; У меня есть решение Xamarin forms с проектами PCL, Droid proj, iOS proj и Windows Universal. Я установил пакеты nuget для SQLite.Net-PCL и SQLite.Net.Core-PCL.Не удается найти рабочий пример SQLite.Net-PCL в форматах Xamarin

Итак, я перехожу к проекту github, чтобы найти некоторые удивительные примеры для начала работы, и никто из них не работает; видимо, вам нужно передать платформу в соединение с базой данных, но я получаю ссылочную ошибку для всех (например, SQLitePlatformWin32).

Искать в Интернете ссылки и ... ничего. Поиск nuget для платформ и ... ничего.

Что мне не хватает? (Да, я чувствую себя тупым)

В качестве примера они есть,

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

и я получаю ссылочную ошибку, что я не могу решить на линии «новый SQLitePlatformWin32».

+0

посмотреть образец ToDo: https://github.com/xamarin/xamarin-forms-samples/tree/master/Todo – Jason

ответ

1

Для кого-то еще борется, вот что вам нужно сделать.

  • Установите SQLite.Net-PCL, SQLite.Net.Core-PCL и PCL-SQLite.Net.Async nugets
  • Создать интерфейс для ISQLite в вашем PCL:

    public interface ISQLite { SQLiteConnection GetConnection(); }

  • Вызов GetConnection через DependencyService

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

  • Вышеупомянутое создаст соединение на основе вашей платформы (т. android, ios). В проекте каждой платформы, вы должны иметь GetConnection, которое, доступную через DependencyService, такие как это для 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, и я не мог найти платформы, вам нужно создать соединение в каждом отдельном проекте.