Entity Frameworkコアを持つNoSQL

entity-framework-core

質問

Entity Frameworkコア用のNoSQLプロバイダが必要です。 MongoDB / RavenなどでEF-Coreバージョンを使用できますか?

受け入れられた回答

このようAzureテーブルストレージ、Redisのと(MongoDBのような)などのようなのNoSQLデータベースプロバイダのサポートは、EFコアチームのバックログに残っているし、まだ実装されていないとCore 1.0.0のリリースには実装されません

つまり、 EFコアロードマップによれば、NoSQLデータベースプロバイダのサポートはチームにとって最優先の機能であり、コア1.0.0リリース後の将来のリリースで出荷される予定です。


人気のある回答

(私は@ MortezaManaviの答えをハイジャックしていないので、答えにコメントを移動する)

あなたの質問では、あなたはEFコアを参照しています。上記のとおり、多くのNoSQLデータソース用のADO.NETプロバイダがあります。 30日間無料の試用版(またはデータソースに応じてベータ版を公開)をダウンロードすることができます。私は答えの一番下に現在のNoSQL製品へのリンクを掲載しました。

私たちの知識ベースには、EF6を使ってMongoDBデータにコードファーストの手法で接続するための記事があります(ただし、原則はデータソースに関係なく適用できます)。私はその記事の内容をここに転載しました。


  1. Visual Studioを開き、新しいWindowsフォームアプリケーションを作成します。この記事では、.NET 4.5でC#プロジェクトを使用しています。
  2. Visual Studioのパッケージマネージャーコンソールで「Install-Package EntityFramework」コマンドを実行し、Entity Frameworkの最新リリースをインストールします。
  3. プロジェクトのApp.configファイルを変更して、MongoDB Entity Framework 6アセンブリへの参照と接続文字列を追加します。

    MongoDBに接続するためのサーバー、データベース、ユーザー、およびパスワードの接続プロパティを設定します。

    <configuration>
       ... 
      <connectionStrings>
        <add name=&quot;MongoDBContext&quot; connectionString=&quot;Offline=False;Server=MyServer;Port=27017;Database=test;User=test;&quot; providerName=&quot;System.Data.CData.MongoDB&quot; />
      </connectionStrings>
      <entityFramework>
        <providers>
           ... 
          <provider invariantName=&quot;System.Data.CData.MongoDB&quot; type=&quot;System.Data.CData.MongoDB.MongoDBProviderServices, System.Data.CData.MongoDB.Entities.EF6&quot; />
        </providers>
      <entityFramework>
    </configuration>
    
  4. インストールディレクトリのlib - > 4.0サブフォルダにあるSystem.Data.CData.MongoDB.Entities.EF6.dllへの参照を追加します。

  5. この時点でプロジェクトを構築し、すべてが正しく機能していることを確認します。これが完了したら、Entity Frameworkを使用してコーディングを開始できます。
  6. 新しい.csファイルをプロジェクトに追加し、クラスを追加します。これはデータベースコンテキストになり、DbContextクラスが拡張されます。この例では、このクラスの名前はMongoDBContextです。次のコード例は、OnModelCreatingメソッドをオーバーライドして、次の変更を行います。

    • ModelBuilderの表記規則からPluralizingTableNameConventionを削除します。
    • MigrationHistoryテーブルへの要求を削除します。

      using System.Data.Entity;
      using System.Data.Entity.Infrastructure;
      using System.Data.Entity.ModelConfiguration.Conventions;
      
      class MongoDBContext : DbContext {
        public MongoDBContext() { }
      
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
          // To remove the requests to the Migration History table
          Database.SetInitializer<MongoDBContext>(null);  
          // To remove the plural names    
          modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }  
      }
      
  7. 別の.csファイルを作成し、取得するMongoDBエンティティの後に名前を付けます(例:Customers)。このファイルで、エンティティとエンティティの両方の構成を定義します。以下の例のようになります。

    using System.Data.Entity.ModelConfiguration;
    using System.ComponentModel.DataAnnotations.Schema;
    
    [System.ComponentModel.DataAnnotations.Schema.Table("Customers")]
    public class Customers {
      [System.ComponentModel.DataAnnotations.Key]
    
      [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
      public System.String _id { get; set; }
      public System.String CompanyName { get; set; }
    }
    
    public class CustomersMap : EntityTypeConfiguration<Customers> {
      public CustomersMap() {
        this.ToTable(&quot;Customers&quot;);
        this.HasKey(Customers => Customers._id);
        this.Property(Customers => Customers.CompanyName);
      }
    }
    
  8. エンティティを作成したので、エンティティをコンテキストクラスに追加します。

    public DbSet<Customers> Customers { set; get; }
    
  9. コンテキストとエンティティが終了したら、別のクラスのデータを照会する準備が整いました。例えば:

    MongoDBContext context = new MongoDBContext();
    context.Configuration.UseDatabaseNullSemantics = true;
    var query = from line in context.Customers select line;
    



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ