我目前正在帮助某人将项目从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对某些设计的陈述可能会起作用吗?或者更手动的东西...
任何帮助将不胜感激。
答案 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;
}
}
}