2014-02-17 38 views
1

我創建了一個屬性類,它表示我的SQLite數據庫的表模式。類中的每個屬性都成爲數據庫中的一個屬性。自動實現的屬性類的C#泛型

class SQLiteTables 
{ 
    public class tblPerson 
    { 
     [PrimaryKey, AutoIncrement] 
     public int PersonID { get; set; } 
     public string PersonFirstName { get; set; } 
     public string PersonMiddleName { get; set; } 
     public string PersonLastName { get; set; } 
    } 

    public class tblSchedule 
    { 
     [PrimaryKey, AutoIncrement] 
     public int ScheduleID { get; set; } 
     public string ScheduleDescription { get; set; } 
     public DateTime ScheduleStart { get; set; } 
     public DateTime ScheduleEnd { get; set; } 
    } 

    //18 more table definitions below 
} 

現在,從表中檢索一些數據,

public void GetPersonList() 
{ 
    List<tblPerson> lstTemp = dbConn.Table<tblPerson>().ToList<tblPerson>(); 

    // Some 20 lines of code here 
} 

我想避免編寫特定類型的方法,那麼這是怎樣的一個乏味的任務的。我想創建一個可重用的方法,可以使用泛型實現檢索任何表上的數據。我怎樣才能做到這一點?

編輯我正在使用Windows Phone 8平臺。

+3

的一種方法是使用ORM,像實體框架。 –

回答

1

這應該適用於你正在做的事情。

public List<T> GetItems<T>() 
{ 
    return dbConn.Table<T>().ToList<T>(); 
} 
+0

問題是如何編寫'表()'方法來創建任何'T'的實例。 – Dennis

+0

我認爲我們正在以不同的方式解釋請求。我會支持我的回答。 –

1

你可以使用DBLinq,這對於支持SQLite的 - 那麼你得到你的語法上免費的數據上下文。

public IList<T> GetList<T>() 
{ 
    return _context.GetTable<T>().ToList(); 
} 
0
public IEnumerable<T> GetItems<T>() where T: new() 
    { 
     lock (locker) { 
      return dbCon.Table<T>().ToArray(); 
     } 
    } 

我認爲最關鍵的是「:新的()」的結尾