具有 Entity Framework 个核心的 NoSQL
NoSQL with Entity Framework Core
我需要 Entity Framework Core 的任何 NoSQL 提供程序。我可以将 EF-Core 版本与 MongoDB /Raven 或其他任何东西一起使用吗?
对 Azure Table 存储、Redis 和其他(如 MongoDb)等 NoSQL 数据库提供商的支持仍在 EF Core 团队积压中,尚未实施,将 未 为 Core 1.0.0 版本实施。
也就是说,根据 EF Core Roadmap,对 NoSQL 数据库提供程序的支持是团队的一项高优先级功能,将在 Core 1.0.0 发布后的未来版本中提供。
(移动评论来回答,所以我不是劫持@MortezaManavi 的回答)
在您的问题中,您引用了 EF Core。正如我提到的,我们为许多 NoSQL 数据源提供了 ADO.NET 个提供程序。您可以为我们的任何提供商下载 30 天免费试用版(或公开测试版,具体取决于数据源)。我在回答的底部包含了指向我们当前 NoSQL 产品的链接。
我们的知识库中有一篇文章使用代码优先方法使用 EF6 连接到 MongoDB 数据(尽管无论数据源如何,都可以应用这些原则)。我把that article的内容抄录在这里。
- 打开 Visual Studio 并创建一个新的 Windows 表单应用程序。本文使用带有 .NET 4.5 的 C# 项目。
- 运行 Visual Studio 中的包管理器控制台中的命令 'Install-Package EntityFramework' 安装最新版本的 Entity Framework。
修改项目中的App.config文件,添加对MongoDBEntity Framework6程序集和连接字符串的引用。
设置服务器、数据库、用户和密码连接属性以连接到 MongoDB。
<configuration>
...
<connectionStrings>
<add name="MongoDBContext" connectionString="Offline=False;Server=MyServer;Port=27017;Database=test;User=test;" providerName="System.Data.CData.MongoDB" />
</connectionStrings>
<entityFramework>
<providers>
...
<provider invariantName="System.Data.CData.MongoDB" type="System.Data.CData.MongoDB.MongoDBProviderServices, System.Data.CData.MongoDB.Entities.EF6" />
</providers>
<entityFramework>
</configuration>
添加对System.Data.CData.MongoDB.Entities.EF6.dll的引用,位于安装目录的lib -> 4.0子文件夹中。
- 此时构建项目以确保一切正常。完成后,您可以使用 Entity Framework.
开始编码
在项目中添加一个新的.cs文件,并在其中添加一个class。这将是您的数据库上下文,它将扩展 DbContext class。在示例中,此 class 被命名为 MongoDBContext。以下代码示例重写 OnModelCreating 方法以进行以下更改:
- 从模型构建器约定中删除 PluralizingTableNameConvention。
删除对 MigrationHistory 的请求 table。
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>();
}
}
创建另一个 .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("Customers");
this.HasKey(Customers => Customers._id);
this.Property(Customers => Customers.CompanyName);
}
}
现在您已经创建了一个实体,将实体添加到您的上下文中 class:
public DbSet<Customers> Customers { set; get; }
上下文和实体完成后,您现在可以在单独的 class 中查询数据了。例如:
MongoDBContext context = new MongoDBContext();
context.Configuration.UseDatabaseNullSemantics = true;
var query = from line in context.Customers select line;
免责声明:我是这个开源项目的所有者和运营者。
如果您仍在寻找 MongoDB EF-Core 提供商,您可以在 GitHub 上找到我的提供商:EntityFrameworkCore.MongoDB。该项目目前包括一个 EF-Core 数据库提供程序和一个 ASP.NET Core Identity 提供程序。
注意:提供程序仍在 preview/prerelease 等待 EF-Core StateManager
.
对复杂类型的适当支持
您可以通过将以下 NuGet 源添加到您的项目来获取这些包:
nuget sources add -name EFCore-MongoDb -Source https://www.myget.org/gallery/efcore-mongodb
查看 getting started wiki 以进一步了解。
我需要 Entity Framework Core 的任何 NoSQL 提供程序。我可以将 EF-Core 版本与 MongoDB /Raven 或其他任何东西一起使用吗?
对 Azure Table 存储、Redis 和其他(如 MongoDb)等 NoSQL 数据库提供商的支持仍在 EF Core 团队积压中,尚未实施,将 未 为 Core 1.0.0 版本实施。
也就是说,根据 EF Core Roadmap,对 NoSQL 数据库提供程序的支持是团队的一项高优先级功能,将在 Core 1.0.0 发布后的未来版本中提供。
(移动评论来回答,所以我不是劫持@MortezaManavi 的回答)
在您的问题中,您引用了 EF Core。正如我提到的,我们为许多 NoSQL 数据源提供了 ADO.NET 个提供程序。您可以为我们的任何提供商下载 30 天免费试用版(或公开测试版,具体取决于数据源)。我在回答的底部包含了指向我们当前 NoSQL 产品的链接。
我们的知识库中有一篇文章使用代码优先方法使用 EF6 连接到 MongoDB 数据(尽管无论数据源如何,都可以应用这些原则)。我把that article的内容抄录在这里。
- 打开 Visual Studio 并创建一个新的 Windows 表单应用程序。本文使用带有 .NET 4.5 的 C# 项目。
- 运行 Visual Studio 中的包管理器控制台中的命令 'Install-Package EntityFramework' 安装最新版本的 Entity Framework。
修改项目中的App.config文件,添加对MongoDBEntity Framework6程序集和连接字符串的引用。
设置服务器、数据库、用户和密码连接属性以连接到 MongoDB。
<configuration> ... <connectionStrings> <add name="MongoDBContext" connectionString="Offline=False;Server=MyServer;Port=27017;Database=test;User=test;" providerName="System.Data.CData.MongoDB" /> </connectionStrings> <entityFramework> <providers> ... <provider invariantName="System.Data.CData.MongoDB" type="System.Data.CData.MongoDB.MongoDBProviderServices, System.Data.CData.MongoDB.Entities.EF6" /> </providers> <entityFramework> </configuration>
添加对System.Data.CData.MongoDB.Entities.EF6.dll的引用,位于安装目录的lib -> 4.0子文件夹中。
- 此时构建项目以确保一切正常。完成后,您可以使用 Entity Framework. 开始编码
在项目中添加一个新的.cs文件,并在其中添加一个class。这将是您的数据库上下文,它将扩展 DbContext class。在示例中,此 class 被命名为 MongoDBContext。以下代码示例重写 OnModelCreating 方法以进行以下更改:
- 从模型构建器约定中删除 PluralizingTableNameConvention。
删除对 MigrationHistory 的请求 table。
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>(); } }
创建另一个 .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("Customers"); this.HasKey(Customers => Customers._id); this.Property(Customers => Customers.CompanyName); } }
现在您已经创建了一个实体,将实体添加到您的上下文中 class:
public DbSet<Customers> Customers { set; get; }
上下文和实体完成后,您现在可以在单独的 class 中查询数据了。例如:
MongoDBContext context = new MongoDBContext(); context.Configuration.UseDatabaseNullSemantics = true; var query = from line in context.Customers select line;
免责声明:我是这个开源项目的所有者和运营者。
如果您仍在寻找 MongoDB EF-Core 提供商,您可以在 GitHub 上找到我的提供商:EntityFrameworkCore.MongoDB。该项目目前包括一个 EF-Core 数据库提供程序和一个 ASP.NET Core Identity 提供程序。
注意:提供程序仍在 preview/prerelease 等待 EF-Core StateManager
.
您可以通过将以下 NuGet 源添加到您的项目来获取这些包:
nuget sources add -name EFCore-MongoDb -Source https://www.myget.org/gallery/efcore-mongodb
查看 getting started wiki 以进一步了解。