Generisches Repository für SQLite-Net Xamarin-Projekt

Frage ich mich, ob es einen Weg gibt, zu schreiben, ein generisches repository für meine Xamarin Projekt-versus schreiben, ein anderes Repository für jede Entität in meinem Objekt. Die Xamarin Tasky Pro Beispiel haben ein Repository für die Aufgabe ein entity-denn das ist die einzige Entität ist, die es hat.

In meinem eigenen Projekt habe ich mehr als eine Entität, so meine Frage ist wie kann ich das machen
die folgenden Customer-Repository zu generisch, so dass die ProductManager, EmployeeManager, etc. verwenden können. Wenn Sie wissen, ein Beispiel oder einen blog-post, bitte zeigen Sie mir 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 haben nun passieren in einer Implementierung ISQlitePlatform in der SQLiteConnectionWithLock und SQLiteConnection Konstruktoren. Die richtige Plattform-Implementierung wird dem Projekt automatisch Hinzugefügt.

InformationsquelleAutor Val Okafor | 2015-03-14

Schreibe einen Kommentar