2013-06-19 97 views
0

我目前正在幫助某人將項目從MongoDB升級到MS SQL;實體框架已經在整個代碼中廣泛使用,並且儘快試圖加速實現它,但我必須承認,我仍然對它感到有些煩惱。我知道它可以用來自動映射數據庫中類和各個列之間的關係,但除此之外,我知之甚少。我更習慣於使用ADO手動設置關係的舊方式,所以這對我來說是一種全新的體驗。使用實體框架從數據庫檢索通用集合

一段代碼尤其是一種方法,這似乎是升級方案的關鍵,這是我在創建與MS SQL兼容的模擬器時遇到的一些麻煩。代碼如下:

public IQueryable<T> GetCollection<T>(ColName collectionName) 
     { 
      MongoDatabase database = GetDatabase(); 
      MongoCollection<T> collection = database.GetCollection<T>(collectionName.ToString()); 
      return collection.AsQueryable(); 
     } 

通常情況下,我只希望列名從數據庫複製,並設置一個新的對象中的字段,並返回它們的列表。除了在這種情況下,它是一個通用/模板,我想象實體會根據它在數據庫中找到的內容自動映射對象內的字段。不幸的是,這是我所能做到的。我正在閱讀這個網站上的教程/其他問題,但是這個問題看起來有點凌駕於我的頭上,正在使用我沒有經驗的東西。也許Linq對某種設計的陳述可能適用於這裏?或更多的手冊...

任何幫助,將不勝感激。

回答

0

我想你已經使用實體框架實現了存儲庫模式。所以,如果你有DatabaseContext作爲你實施的類型DbContext。你可以做到這一點如下:

public partial class Repository<T> : IRepository<T> where T : BaseEntity 
    { 
     private readonly DatabaseContext _context; 
     private IDbSet<T> _entities; 

     public Repository(DatabaseContext context) 
     { 
      this._context = context; 
     } 
     public virtual IQueryable<T> GetCollection() 
     { 
      get 
      { 
       return this.Entities; 
      } 
     } 
    }