visual usar studio net how ejemplo como android xamarin sqlite-net-extensions

usar - Use SQLiteNetextensions con Xamarin para Android-App



xamarin database sqlite (3)

Bien después de un poco de búsqueda, llegué a saber que el creador de esta extensión utilizó un patrón llamado MvvmCross mientras lo desarrollaba. Entonces, a menos que esté usando ese modelo de patrón, obtendrá este error.

Para los usuarios que no son de MvvmCross, deben reconstruir los archivos de origen y hacer referencia a ellos en su proyecto y no usar el precompilado, el que está utilizando.

Vaya a la cuarta publicación en el siguiente enlace https://forums.xamarin.com/discussion/20117/sqlite-net-extensions-and-sqliteconnection aquí y le dice cómo reconstruir desde el origen en su publicación de una manera muy breve.

Espero que lo comprendas, pero si no, espera hasta que instale Visual Studio y Xamarin y lo pruebe yo mismo para que pueda darte los pasos precisos. Tardará un tiempo, entonces hasta entonces, ¡Felicitaciones!

Aquí está el enlace a los archivos fuente https://bitbucket.org/twincoders/sqlite-net-extensions/downloads/ Haga clic en el repositorio de descargas

He leído algunos hilos sobre SQLite para Xamarin, pero todavía no puedo configurar SQLiteNetExtensions de manera adecuada. Actualmente estoy desarrollando una aplicación para Android con Target Framework Android 7.1 (API Nivel 25 - Turrón).

¿Alguien puede decirme qué estoy haciendo mal?

  1. Instalé paquetes nuget:

    Install-Package SQLiteNetExtensions -Version 2.0.0-alpha2 -Pre

    Install-Package SQLite.Net-PCL -Version 3.1.1

    De acuerdo con: https://bitbucket.org/twincoders/sqlite-net-extensions

  2. Luego configuré mi código.

    using SQLite.Net.Attributes; using SQLiteNetExtensions.Attributes; using System; namespace AppName.Resources.Model { public class Entry { [PrimaryKey, AutoIncrement] public int Id { get; set; } [ForeignKey(typeof(Stock))] public int StockId { get; set; } public DateTime Date { get; set; } public double Amount { get; set; } } }


    using SQLite.Net.Attributes; using SQLiteNetExtensions.Attributes; using System; using System.Collections.Generic; namespace AppName.Resources.Model { public class Stock { [PrimaryKey, AutoIncrement] public int Id { get; set; } public string Name { get; set; } public DateTime LastUpdated { get; set; } [OneToMany(CascadeOperations = CascadeOperation.All)] public List<Entry> Entrys { get; set; } } }


    using Android.Util; using AppName.Resources.Model; using SQLite.Net; using SQLite.Net.Platform.XamarinAndroid; using SQLiteNetExtensions.Extensions; using System.Collections.Generic; using System.IO; namespace AppName.Resources.DataHelper { public class DataBase { string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); public bool CreateDataBase() { try { using (var stocksDBConnection = new SQLiteConnection(new SQLitePlatformAndroid(), Path.Combine(folder, "Stock.db"))) { stocksDBConnection.CreateTable<Entry>(); stocksDBConnection.CreateTable<Stock>(); return true; } } catch (SQLiteException ex) { Log.Info("SQLiteEx", ex.Message); return false; } } public bool InsertIntoTableStock(object stock) { try { using (var stocksDBConnection = new SQLiteConnection(new SQLitePlatformAndroid(), Path.Combine(folder, "Stock.db"))) { stocksDBConnection.InsertWithChildren(stock); return true; } } catch (SQLiteException ex) { Log.Info("SQLiteEx", ex.Message); return false; } } ...

  3. Estas referencias fueron agregadas por nuget:

    SQLite-net

    SQLite.Net

    SQLite.Net.Platform.XamarinAndroid

    SQLiteNetExtensions

    SQLitePCLRaw.Batteries_green

    SQLitePCLRaw.Core

    SQLitePCLRaw.lib.e_sqlite3

    SQLitePCLRaw.provider.e_sqlite3

  4. Error que ocurre:

    ''SQLiteConnection'' no contiene una definición para ''InsertWithChildren'' y la mejor sobrecarga del método de extensión ''WriteOperations.InsertWithChildren (SQLiteConnection, object, bool)'' requiere un receptor de tipo ''SQLiteConnection''

    ''SQLiteConnection'' no contiene una definición para ''GetAllWithChildren'' y la mejor sobrecarga del método de extensión ''ReadOperations.GetAllWithChildren (SQLiteConnection, Expression>, bool)'' requiere un receptor de tipo ''SQLiteConnection''

Bueno, eso es lo lejos que llego. ¿Alguien por ahí que sabe qué hacer? ¿Tal vez eliminar referencias conflictivas?


Después de algunas investigaciones descubrí que:

Install-Package SQLiteNetExtensions -Version 2.0.0-alpha2 -Pre

depende de

Install-Package sqlite-net-pcl

en lugar de

Install-Package SQLite.Net-PCL -Version 3.1.1

Pero después de eliminar todas las referencias, limpiar la solución y SQLite.net instalar los dos paquetes necesarios, ya no hay SQLite.net disponible. Al tratar de usar SQLite lugar:

''SQLiteConnection'' no contiene una definición para ''InsertWithChildren'' y la mejor sobrecarga del método de extensión ''WriteOperations.InsertWithChildren (SQLiteConnection, object, bool)'' requiere un receptor de tipo ''SQLiteConnection''

Tengo curiosidad si incluso es posible desarrollar aplicaciones de Android con VS sin problemas. Dado que todo lleva años en configurarse.

EDITAR:

Bueno, después de algunos días de dolor en el a **, la solución fue utilizar el prelanzamiento aún más nuevo (alpha 3 ) al que ni siquiera se hacía referencia en las páginas oficiales. Actualmente estoy satisfecho. :)

Install-Package SQLiteNetExtensions-netstandard -Version 2.0.0-alpha3 -Pre

Espero que alguien pueda necesitar esto.


Ok, estoy seguro de que es solo un problema de versión porque acabo de probar tu código y funciona bien para mí. Intente instalar el paquete SQliteNetExtensions v 1.3.0 desde la ventana del administrador de paquetes NuGet en Visual Studio y nada más. Instalará todas sus dependencias.

Esto es lo que hice: intentar hacer lo mismo y ver si esto ayuda:

  1. Creé un nuevo proyecto de aplicación Android Vista única en Visual Studio (estoy usando la comunidad 2017, pero no debería importar) y creé
    las Clases de Stock , Entry y Database y pegado su dado
    código respectivamente.
  2. Instalé solo el paquete SQliteNetExtensions v 1.3.0 del Administrador de paquetes NuGet Instaló las siguientes dependencias junto con él, no las instalé yo mismo.
    SQLite.Net-PCL v3.0.5
    NewtonSoft.Json v6.0.8

Esto es lo que obtuve después de instalar solo el paquete SQliteNetExtensions v 1.3.0 .

Como puede ver, muestra una actualización para SQLite.Net-PCL v3.0.5 a v3.1.1 También me cansé con la actualización y todavía funciona bien, por lo que depende de usted actualizar o no.

Aquí una pequeña prueba de que está funcionando bien. También compilé y ejecuté la aplicación en el emulador y funciona todo bien.