使用Entity Framework从数据库中检索泛型集合

时间:2013-06-19 15:02:10

标签: c# entity-framework

我目前正在帮助某人将项目从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();
        }

通常,我只是从数据库中复制列名,并在新对象中设置字段,并返回它们的列表。除了在这种情况下,它是一个通用/模板,我想Entity做了一些魔术,根据它在数据库中找到的内容自动映射对象内的字段。不幸的是,这就是我可以去的地方。我正在阅读本网站上的教程/其他问题,但这个看起来有点过头了,使用了我没有经验的东西。也许Linq对某些设计的陈述可能会起作用吗?或者更手动的东西...

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为您已使用Entity Framework实现了存储库模式。因此,如果您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;
            }
        }
   }