MongoDB


  MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

  Fireasy 的 Entity 组件提供了对 MongoDB 的适配,旨在不改变实体模型和沿用 EntityContext 模式的前提下,将仓储改为使用 MongoDB 实现,但是将不能使用关联查询特性,所以目前对于 MongoDB 来说,仅作为存储文档型(比如日志)的数据之用。

  修改配置文件如下:

  • .Net Framework 下的 app.config 或 web.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="fireasy">
      <section name="dataInstances" type="Fireasy.Data.Configuration.InstanceConfigurationSectionHandler, Fireasy.Data"/>
      <section name="dataProviders" type="Fireasy.Data.Provider.Configuration.ProviderConfigurationSectionHandler, Fireasy.Data" />
  </configSections>
  <fireasy>
    <dataInstances>
      <instance name="mongdb" providerName="mongdb" connectionString="server=mongodb://localhost;database=test"/>
    </dataInstances>
    <dataProviders>
      <provider name="mongdb" type="Fireasy.MongoDB.MongoDBProvider, Fireasy.MongoDB">
      </provider>
    </dataProviders>
  </fireasy>
</configuration>
  • .Net Core 下的 appsettings.json 文件
{
  "fireasy": {
      "dataInstances": {
      "default": "mongodb",
      "settings": {
        "mongodb": {
          "providerName": "mongodb",
          "connectionString": "server=mongodb://localhost;database=test"
        }
      }
    },
    "dataProviders": {
      "settings": {
        "mongodb": {
          "type": "Fireasy.MongoDB.MongoDBProvider, Fireasy.MongoDB"
        }
      }
    }
  }
}

  在 EntityContext 的实现类中,可以重写 OnConfiguring 方法,使用 UseMongoDB 方法指定 MongoDB 的连接串。如下所示:

public class DbContext : EntityContext
{
    protected override void OnConfiguring(EntityContextOptionsBuilder builder)
    {
        builder.UseMongoDB("server=mongodb://localhost;database=test");
    }
}

  在 .Net Core 应用中可以使用 EntityContextOptionsBuilder 类的扩展方法 UseMongoDB 切换到 MongoDB。如下所示:

namespace demo
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddFireasy();
            services.AddEntityContext<DbContext>(builder =>
                    builder.UseMongoDB("server=mongodb://localhost;database=test"));
        }
    }
}