C# 使用实体框架从数据库检索泛型集合

C# 使用实体框架从数据库检索泛型集合,c#,entity-framework,C#,Entity Framework,我目前正在帮助某人将一个项目从MongoDB升级到MS SQL;实体框架在整个代码中都得到了广泛的使用,我必须承认,我仍然对它感到有点恼火。我知道它可以用来自动映射数据库中类和各个列之间的关系,但除此之外,我所知甚少。我更习惯于使用ADO手动设置关系的旧方法,因此这对我来说是一种新的体验 特别是一段代码之后,一种方法(似乎是升级方案的关键)就是我在创建与MS SQL兼容的模拟程序时遇到的问题。代码如下: public IQueryable<T> GetCollection<T&

我目前正在帮助某人将一个项目从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();
        }
public IQueryable GetCollection(ColName collectionName)
{
MongoDatabase数据库=GetDatabase();
MongoCollection collection=database.GetCollection(collectionName.ToString());
返回集合。AsQueryable();
}
通常,我只是从数据库中复制列名,并在新对象中设置字段,然后返回它们的列表。除了在本例中,它是一个通用/模板,我认为该实体具有某种魔力,能够根据在数据库中找到的内容自动映射对象内的字段。不幸的是,我只能做到这一点。我正在阅读这个网站上的教程/其他问题,但是这个问题似乎有点让我不知所措,使用了一些我没有经验的东西。也许某种设计的Linq声明可以在这里使用?或者更手工的东西


任何帮助都将不胜感激

我认为您已经使用实体框架实现了存储库模式。因此,如果将
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;
            }
        }
   }
public分部类存储库:IRepository其中T:BaseEntity
{
私有只读数据库上下文\u上下文;
私有IDbSet_实体;
公共存储库(数据库上下文)
{
这._context=context;
}
公共虚拟IQueryable GetCollection()
{
得到
{
返回此。实体;
}
}
}