Универсальный EF Model Builder для персистентного уровня данных в .Net Core - PullRequest
0 голосов
/ 28 мая 2019

Я хочу передать свои объекты в базу данных SQL Server из API в .Net Core.Мне нужно расширение или модуль, который можно добавить в компоновщик контейнеров и помогает мне использовать его в методе ConfigureServices в Startup.cs. Я нашел проект в соответствии со своими потребностями (https://github.com/devmentors/DNC-DShop),, но этот пример был реализован с MongoDB. Iхочу реализовать то же самое с БД SQLSERVER и EF ORM.

Этот код находится внутри файла запуска Для примера Mongo:

builder.AddMongo();
builder.AddMongoRepository<Cart>("Carts");
builder.AddMongoRepository<Customer>("Customers");
builder.AddMongoRepository<Product>("Products");

Этот код в файле applicationsetting.json:

  "mongo": {
    "connectionString": "mongodb://localhost:27017",
"database": "customers-service",
    "seed": false
},

Этот код находится внутри Extension.cs:

public static class Extensions
    {

        public static void AddMongoRepository<TEntity>(this ContainerBuilder builder, string collectionName)
            where TEntity : IIdentifiable
            => builder.Register(ctx => new EFRepository<TEntity>(ctx.Resolve<IMongoDatabase>(), collectionName))
                .As<IMongoRepository<TEntity>>()
                .InstancePerLifetimeScope();
    }

1 Ответ

0 голосов
/ 28 мая 2019

Я опишу решение с проектом, над которым я сейчас работаю ( Sppd.TeamTuner ), который поддерживает несколько поставщиков баз данных.

Существует проект * .DataAccess.EF.csproj, регистрирующий необходимые службы и настраивающий DbContext. Важно понимать, что этот проект НЕ регистрирует используемый экземпляр базы данных, он просто указывает, как будут храниться объекты. Интересные для вас занятия - это частичные TeamTunerContext.cs классы здесь . Я добавил этот абзац, так как в вашем примере он кажется связанным с MongoDb, в этом не должно быть необходимости.

То, что вы ищете, рассказывает, какую БД использовать, делается в одном из выделенных проектов провайдера БД (MsSql, Sqlite, InMemory). Поскольку вы хотите использовать SQL, эта строка актуальна:

services.AddDbContext<TeamTunerContextMsSql>(options => options.UseSqlServer(databaseConfig.ConnectionString))

Для этого используется ссылка на пакет nuget Microsoft.EntityFrameworkCore.SqlServer , содержащий метод расширения UseSqlServer. (Если вы ссылаетесь на ядро ​​asp.net в вашем проекте, я думаю, что это уже включено).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...