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 声明可能在这里起作用?或者更手动的东西...

任何帮助,将不胜感激。

4

1 回答 1

0

我认为您已经使用实体框架实现了存储库模式。因此,如果您DatabaseContextDbContext. 你可以这样做:

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;
            }
        }
   }
于 2013-06-19T15:07:40.283 回答