Мне нужен какой-либо провайдер NoSQL для Entity Framework Core. Могу ли я использовать версию EF-Core с MongoDB/Raven или что-нибудь еще?
NoSQL с базой ядра Entity Framework
Ответ 1
Поддержка поставщиков баз данных NoSQL, таких как хранилище таблиц Azure, Redis и других (например, MongoDb), все еще остается в группе EF Core backlog и еще не реализована и не будет реализована для выпуска Core 1.0.0.
Тем не менее, согласно EF Core Roadmap, поддержка поставщиков баз данных NoSQL является высокоприоритетной функцией для команды и будет поставляется в будущих выпусках после выпуска Core 1.0.0.
Ответ 2
(перемещение комментария для ответа, поэтому я не захвачу ответ @MortezaManavi)
В вашем вопросе вы ссылаетесь на EF Core. Как я уже упоминал, у нас есть поставщики ADO.NET для многих источников данных NoSQL. Вы можете скачать бесплатную 30-дневную пробную версию (или открытую бета-версию, в зависимости от источника данных) для любого из наших поставщиков. Я включил ссылки на наши текущие предложения NoSQL в нижней части моего ответа.
У нас есть статья в нашей Базе знаний для подключения к данным MongoDB с EF6 с использованием кодового подхода (хотя принципы могут применяться независимо от источника данных). Я переписал содержание этой статьи здесь.
- Откройте Visual Studio и создайте новое приложение Windows Form. В этой статье используется проект С# с .NET 4.5.
- Запустите команду "Install-Package EntityFramework" в консоли диспетчера пакетов в Visual Studio, чтобы установить последнюю версию Entity Framework.
-
Измените файл App.config в проекте, чтобы добавить ссылку на сборку MongoDB Entity Framework 6 и строку подключения.
Задайте свойства подключения Server, Database, User и Password для подключения к 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 файл в проект и добавить к нему класс. Это будет ваш контекст базы данных, и он расширит класс DbContext. В этом примере этот класс называется MongoDBContext. Следующий пример кода переопределяет метод OnModelCreating, чтобы внести следующие изменения:
- Удалить PluralizingTableNameConvention из соглашений ModelBuilder.
-
Удалите запросы в таблицу 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>(); } }
-
Создайте еще один файл .cs и назовите его после объекта MongoDB, который вы получаете, например, клиенты. В этом файле определите как Entity, так и Entity Configuration, которые будут выглядеть следующим образом:
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); } }
-
Теперь, когда вы создали сущность, добавьте объект в свой класс контекста:
public DbSet<Customers> Customers { set; get; }
-
С завершением контекста и объекта теперь вы готовы запросить данные в отдельном классе. Например:
MongoDBContext context = new MongoDBContext(); context.Configuration.UseDatabaseNullSemantics = true; var query = from line in context.Customers select line;
Ответ 3
Отказ от ответственности: я являюсь владельцем и оператором этого проекта с открытым исходным кодом.
Если вы все еще ищете провайдера EF-Core от MongoDB, вы можете найти моего провайдера в GitHub: EntityFrameworkCore.MongoDB. В настоящее время проект включает поставщика базы данных EF-Core и поставщика основных идентификаторов ASP.NET.
ПРИМЕЧАНИЕ: поставщик все еще находится в предварительном просмотре/предварительном просмотре, ожидая надлежащей поддержки сложных типов в EF-Core StateManager
.
Вы можете перейти к пакетам, добавив в проект следующий источник NuGet:
nuget sources add -name EFCore-MongoDb -Source https://www.myget.org/gallery/efcore-mongodb
Посмотрите начало работы wiki для более пристального просмотра.