是否有实体框架可以替代mongodb?

时间:2019-01-15 08:27:03

标签: .net mongodb entity-framework odata

我正在使用.Net + Mongodb设置odata v4 API。

microsoft official document开始,实体框架被用作数据访问层。但是看起来它不适用于mongodb。可以与mongo db一起使用的EF是否有替代品?

1 个答案:

答案 0 :(得分:1)

这完全取决于您希望EF将MongoDB的哪些功能包装起来,最常见的功能之一就是能够使用Linq,并且因为您提到了使用linq的OData,所以我将对此进行解释。

使用标准的mongodb驱动程序(https://www.nuget.org/packages/MongoDB.Driver/2.7.2),您可以执行以下操作在集合上公开IQueryable<T>对象:

var mongoClient = new MongoClient();
var mongoDatabase = mongoClient.GetDatabase("test");
var mongoCollection = mongoDatabase.GetCollection<Person>("users");

var over18 = await mongoCollection.AsQueryable()
    .Where(x => x.Age >= 18)
    .Select(x => x.Name)
    .ToListAsync();

class Person
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}