Zastanawiam się, czy istnieje sposób na napisanie ogólnego repozytorium dla mojego projektu Xamarin, a nie na pisanie innego repozytorium dla każdej jednostki w moim obiekcie. Przykład Xamarin Tasky Pro ma jedno repozytorium dla encji Zadania, ponieważ jest to jedyna jednostka, którą ma.Generyczne repozytorium dla SQLite-Net w Xamarin Project
W moim własnym projekcie mam więcej niż jedną encję, więc moje pytanie brzmi: jak mogę uczynić następujące repozytorium klienta, aby stało się ogólne, aby ProductManager, EmployeeManager, itp. Mogli z niego korzystać. Jeśli znasz przykład lub wpis na blogu, proszę wskazać mi właściwy kierunek:
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);
}
}
Teraz trzeba przejść w realizacji ISQlitePlatform w SQLiteConnectionWithLock i SQLiteConnection konstruktorów. Poprawna implementacja platformy jest automatycznie dodawana do projektu. –