Générique Référentiel pour SQLite-Net en Xamarin Projet
Je me demande si il y a une façon d'écrire un générique référentiel pour mon Xamarin projet de rapport à l'écriture d'un Référentiel pour chaque entité de mon objet. Le Xamarin Tasky Pro exemple, un Référentiel pour l'entité Tâche parce que c'est la seule entité.
Dans mon projet, j'ai plus d'une Entité, donc ma question est comment puis-je faire
le Client suivant Référentiel de devenir générique, de sorte que le ProductManager, EmployeeManager, etc, peuvent l'utiliser. Si vous connaissez un exemple ou un billet de blog, merci de m'indiquer la bonne direction
namespace App.DataLayer
{
public class CustomerRepository
{
private ProntoDatabase _db = null;
protected static string DbLocation;
protected static CustomerRepository Me;
static CustomerRepository()
{
Me = new CustomerRepository();
}
protected CustomerRepository()
{
//set the db location;
DbLocation = DatabaseFilePath;
//instantiate the database
_db = new ProntoDatabase(DbLocation);
}
public static string DatabaseFilePath
{
get
{
const string sqliteFilename = "CustomerDB.db3";
var libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(libraryPath, sqliteFilename);
return path;
}
}
//CRUD (Create, Read, Update and Delete) methods
public static Customer GetCustomer(int id)
{
return Me._db.GetItem<Customer>(id);
}
public static IEnumerable<Customer> GetCustomers()
{
return Me._db.GetItems<Customer>();
}
public static int SaveCustomer(Customer item)
{
return Me._db.SaveItem(item);
}
public static int DeleteCustomer(int id)
{
return Me._db.DeleteItem<Customer>(id);
}
}
Vous devez maintenant passer à la mise en œuvre de ISQlitePlatform dans le SQLiteConnectionWithLock et SQLiteConnection constructeurs. La plate-forme correcte mise en œuvre est automatiquement ajouté au projet.
OriginalL'auteur Val Okafor | 2015-03-14
Vous devez vous connecter pour publier un commentaire.
C'est une vieille question, mais voici ma mise en œuvre.
Im en utilisant les connexions asynchrones car ils fournissent une meilleure performance dans des projets mobiles. Les pépites que j'ai installé sont
Sqlite.Net-PCL
/SQLite.Net.Async-PCL
sur la Base du projet et de la nuget sur le projet Android.Mon Référentiel ressemble à ceci:
Quelques exemples sur la façon de l'utiliser:
Si le Dépôt ne pas répondre à votre requête, vous pouvez utiliser AsQueryable():
Le propriétaire a non cotées
Sqlite.Net.Platform.XamarinAndroid
paquet. Cela pourrait signifier que le paquet est obsolète ou ne devraient pas être utilisés plus. LIENComment ce travail sans le "public class Référentiel<T> : IRepository<T> T : de classe, de (nouveaux)"
Pourriez-vous trouver une solution pour elle? Mon compilateur se plaint aussi abuout "public class Référentiel<T> : IRepository<T> T : new()". Le message d'erreur est :"Le type" T "doit être un type de référence afin de l'utiliser comme paramètre" T " dans le générique du type ou de la méthode 'IRepository<T>'"
Ajouter "classe" à côté de l'interface . simplement votre classe doit être "public class Référentiel<T> : IRepository<T> T : de classe, de (nouveaux)"
OriginalL'auteur xleon
Ma mise en œuvre avec l'aide de l'unité du CIO est donnée ci-dessous, Mon projet comprend la PCL, Xamarin Android & Xamarin iOS projets
Définir un modèle de base avec une clé primaire
Définir un générique dépôts de base comme indiqué ci-dessous
Définir deux exemples de classes qui sont héritées de la BaseModel
Registre
résoudre comme cela
OriginalL'auteur Shyju M