【问题标题】:Entity Framework and MongoDb实体框架和 MongoDb
【发布时间】:2011-10-11 12:22:38
【问题描述】:

Entity Framework 有可能支持 MongoDb 数据库吗?也许有人会写一个 EF MongoDb Provider?

【问题讨论】:

  • 任何接受的答案?!

标签: entity-framework orm mongodb


【解决方案1】:

我不确定,但我认为 Microsoft.EntityFrameworkCore.Cosmos Database Provider 会为您工作。

【讨论】:

    【解决方案2】:

    查看最新版本的 MongoDB C# 库......支持 LINQ!

    https://mongodb.github.io/mongo-csharp-driver/1.11/linq/

    【讨论】:

    • 支持 Linq 是否意味着它也支持 EF?
    • @mehul9595 这是一个很好的问题,不,这并不意味着,所以这个答案根本不是对所提出问题的答案。
    • 此链接有效。
    • LINQ 是否有用,因为 mongodb api 应该返回 json 数据?
    • 链接失效了
    【解决方案3】:

    CData 开发了一个库,用于使用 Entity Framework 6.0 对 MongoDb 进行 CRUD 操作。但它不是免费的。

    库的详细信息可以在

    中找到

    https://www.cdata.com/kb/tech/mongodb-ado-codefirst.rst

    【讨论】:

      【解决方案4】:

      简短的回答 - 不,这肯定是可能的,但不合理。

      MongoDB 是文档数据库,不支持集合之间的任何物理关系。 EF 非常适合 SQL、MySQL 等关系型数据库。MongoDB 处理嵌入式文档的速度更快。所以这只是两种不同的方法。

      【讨论】:

      • 为什么不呢?实体框架是一个 ORM,一个复杂的复合对象更类似于一个文档,而不是几个 FK 喜欢的几个表中的一堆行。此外,EF to MongoDB 可以依靠手动引用来实现关系。因此,在文档数据库中实现 EF 提供程序应该比在 RDBMS 中更容易。
      • 现在 EF Core 不绑定到关系数据库,并且也支持文档数据库。例如,有一个 Azure Cosmos DB 文档数据库的提供程序。
      • EF 是一个 ORM,它将应用程序轮胎中的对象映射到数据轮胎中的关系模型。在 mongo 中,在 Mongo 驱动程序的帮助下,对象可以直接传递给数据轮胎,因此不需要 ORM。将 EF 用于 mongodb 或开发和提供程序是大材小用。
      【解决方案5】:

      我不建议使用旧版本的使用 LINQ 的 MongoDb 提供程序。最好和稳定的 C# MongoDb 驱动程序是使用 Builders 机制的 C# 官方 MongoDb 驱动程序 2.0。

      LINQ 旧版驱动程序有许多限制,包括不方便且缓慢的批量插入机制。

      【讨论】:

      • 嗨 DotNetGoose - 您的回答看起来很有用,但有点令人困惑;您能否添加一些链接来支持您所说的内容,例如 C 的 MongoDB 驱动程序的官方文档?
      • @VinceBowdren 嗨,我根据自己使用新旧 MongoDb 驱动程序的经验得出了这个结论。我不记得细节了,那是一年前的事了,但是老司机的性能较慢,批量操作的机制非常不舒服,还有一些错误和不明显的行为。
      • 我知道这是一个旧答案,但官方驱动程序的 LINQ 支持已从 2.1 版(2015 年 10 月)重写,因此如果您现在想使用 LINQ,推荐使用这种方法。见release notes
      【解决方案6】:

      在线查看,RSSBus 看起来创建了一个 MongoDBProviderServices dll,可以与实体框架 6 一起使用。

      http://cdn.rssbus.com/help/DG1/ado/pg_ef6.htm

      该链接包含有关如何实现它的教程。

      【讨论】:

        【解决方案7】:

        我是实体框架的忠实拥护者,所以当我第一次尝试 mongoDb 时,我创建了一个名为“MongoDB.Dynamic”的库,该库具有 EF Code First 旁边的方法。 MongoDB在物理上没有集合之间的关系,但你可以模拟它。 MongoDB.Dynamic 有一个称为 Eager Loading 的功能,如果实体具有约定的结构,您可以配置集合之间的关系并自动加载相关文档。你可以尝试阅读MongoDB.Dynamic的一些文档

        【讨论】:

          猜你喜欢
          • 2015-05-05
          • 1970-01-01
          • 2013-02-10
          • 2020-08-12
          • 2011-08-20
          • 2011-10-25
          • 2013-04-13
          • 2016-07-21
          • 1970-01-01
          相关资源
          最近更新 更多