Ich frage mich, ob es eine Möglichkeit gibt, ein generisches Repository für mein Xamarin-Projekt zu schreiben, anstatt ein anderes Repository für jede Entität in meinem Objekt zu schreiben. Das Beispiel Xamarin Tasky Pro verfügt über ein Repository für die Entität Task, da dies die einzige Entität ist, die es besitzt.Generisches Repository für SQLite-Net in Xamarin Projekt
In meinem eigenen Projekt habe ich mehr als eine Entität, also meine Frage ist, wie kann ich das folgende Kundenrepository machen, um generisch zu werden, damit der ProductManager, EmployeeManager, usw. es verwenden kann. Wenn Sie ein Beispiel kennen oder eine Blog-Post mich bitte auf die richtige Richtung
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);
}
}
Sie jetzt in einer Implementierung von ISQlitePlatform in dem SQLiteConnectionWithLock und SQLiteConnection Bauer passieren müssen. Die korrekte Plattformimplementierung wird automatisch zum Projekt hinzugefügt. –