Как реализовать схему на арендатора в ядре EF? - PullRequest
0 голосов
/ 14 января 2019

Я нашел много похожих вопросов и постов, как это сделать, но я не уверен, какой подход лучше. Я думаю, что мне нужен некоторый класс DbContextFactory, который будет возвращать мне контекст в зависимости от TenantId, но я не знаю, как этого добиться с помощью OnModelCreating. В основном я видел сообщения об архитектуре db-per-tenant, и я не уверен, что знаю, как связать схему с контекстом (через пользователя?). Я пытался следовать этому https://romiller.com/2011/05/23/ef-4-1-multi-tenant-with-code-first/ но похоже, что это не подходит для последней версии EF. Я тоже это проверял мультитенант с кодом First EF6 но IDbModelCacheKeyProvider изменился и теперь требует DbContext в Create, в отличие от того, что я хочу сделать. Можете ли вы дать мне пример того, как это делается?

1 Ответ

0 голосов
/ 14 января 2019

Используйте этот код для установки схемы по умолчанию в вашем контексте:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("blogging");
    }

Создайте другой контекст, используя ту же строку подключения, а затем выполните:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("mydifferentschemaname");
    }

Это должно достичь того, что вы хотите.

Более подробная информация здесь .

Вы также можете сопоставить таблицы (сущности) со схемами, такими как:

modelBuilder.Entity<Department>().ToTable("t_Department", "school");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...