SQLite-Net Extensions Exemple sur Xamarin Forms
Je suis interessé dans l'utilisation de SQlite-Net Extensions (https://bitbucket.org/twincoders/sqlite-net-extensions) avec Xamarin Forms. Je suis à l'aide de Visual Studio 2013, SQlite.Net PCL 2.3.0 de NuGet, et un vide Bonjour tout le Monde Xamarin Forms PLC projet. Comme première étape, je suis en train de tout l'exemple de la Sqlite.Net les extensions de site de travail. Conformément à la méthode proposée sur le Xamarin site, je suis en utilisant DependencyService pour obtenir le SQLIteConnection. Cependant, mon code ne sera même pas le compiler car il ne peut pas trouver UpdateWithChildren ni GetWithChildren méthodes sur la SQLiteConnection. Il semble évident que mon SQLiteConnection l'objet n'a pas tous les mêmes choses que dans l'exemple. Suis-je utiliser le mauvais bibliothèque pour SQLite.Net PCL? Les deux Xamarin et SQLite-Net Extensions a suggéré d'utiliser le PCL version de NuGet, qui est, je pense, ce que j'ai...
J'ai cette affichées sur le Xamarin Forums ici:
http://forums.xamarin.com/discussion/20117/sqlite-net-extensions-and-sqliteconnection#latest
Voici mon code (sauf pour le ISQLite classe).
Modèles De Données:
using SQLiteNetExtensions.Attributes;
using SQLite.Net.Attributes;
namespace Sample.Models
{
public class Stock
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
[MaxLength(8)]
public string Symbol { get; set; }
[OneToMany] // One to many relationship with Valuation
public List<Valuation> Valuations { get; set; }
}
public class Valuation
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
[ForeignKey(typeof(Stock))] // Specify the foreign key
public int StockId { get; set; }
public DateTime Time { get; set; }
public decimal Price { get; set; }
[ManyToOne] // Many to one relationship with Stock
public Stock Stock { get; set; }
}
}
Et voici mon DatabaseHelper. Maintenant je suis en cours d'exécution d'un test à droite dans le constructeur. L'erreur que je reçois est que les méthodes UpdateWithChildren et GetWithChildren ne peut pas être trouvé.
using Sample.Models;
using SQLite.Net;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace Sample.Orm
{
class DatabaseHelper
{
private SQLiteConnection db;
public DatabaseHelper()
{
db = DependencyService.Get<ISQLite>().GetConnection();
//Create the tables
db.CreateTable<Stock>();
db.CreateTable<Valuation>();
var euro = new Stock()
{
Symbol = "€"
};
db.Insert(euro); // Insert the object in the database
var valuation = new Valuation()
{
Price = 15,
Time = DateTime.Now,
};
db.Insert(valuation); // Insert the object in the database
// Objects created, let's stablish the relationship
euro.Valuations = new List<Valuation> { valuation };
db.UpdateWithChildren(euro); // Update the changes into the database
if (valuation.Stock == euro)
{
Debug.WriteLine("Inverse relationship already set, yay!");
}
// Get the object and the relationships
var storedValuation = db.GetWithChildren<Valuation>(valuation.Id);
if (euro.Symbol.Equals(storedValuation.Stock.Symbol))
{
Debug.WriteLine("Object and relationships loaded correctly!");
}
}
}
}
Vous devez vous connecter pour publier un commentaire.
SQLite-Net Extensions est maintenant disponible en tant que packages NuGet pour MvvmCross et standard PCL saveurs de SQLite-Net. Cela devrait résoudre ce genre de questions où la bibliothèque a été compilé avec un SQLite-version Net, mais exécuté avec une autre, qui pourrait causer le genre de problèmes que vous décrivez.
Les liens:
Jon Goldberger de Xamarin soutien m'a orienté dans la bonne direction. Pour ceux à la recherche de ce post à l'avenir, la solution en bref, est que si vous utilisez MvvmCross vous avez besoin pour construire SQLite-Net Extensions à partir de la source, de ne pas utiliser le fichier dll. Une fois que vous tirez à partir de leur serveur git, vous devez ajouter le SQLiteNetExtensions-PCL.csproj, restaurer les packages de Projet->Restaurer les Packages et faire référence à la SQLiteNetExtensions-PCL projet à partir de votre base de projet.
Voici le qualifier pleinement de la classe (espace de noms et la méthode).
Juste ajouté:
SQL Lite Extensions