Как использовать префикс пользовательской таблицы в сочетании с TPH в Entity Framework Core?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать префикс пользовательской таблицы в сочетании с TPH в Entity Framework Core?

Сообщение Anonymous »

Отказ от ответственности: у меня относительно мало опыта в C#/WPF/EFC.
Я работаю над приложением WPF, написанным на C#, которому необходимо хранить некоторые данные в базе данных. Для хранения этих данных я хочу использовать Entity Framework Core. Приложение будет использовать общий экземпляр базы данных, который также используется другими приложениями. Каждое приложение имеет свой собственный префикс таблицы, поэтому мое приложение также должно иметь собственный префикс таблицы.
Обновить
Я хочу добиться того, чтобы все объекты, унаследованные от Parent, хранились в одной таблице. Когда я «загружаю» данные из таблицы, мне нужен экземпляр класса Child. Невозможно/невозможно иметь экземпляры Parent.
Добавить префикс таблицы
I добавил префиксы таблиц в функцию OnModelCreating моего класса DbContext (пока это работает отлично):

Код: Выделить всё

foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
modelBuilder.Entity(entity.ClrType).ToTable(tablePrefix + entity.GetTableName());
}
Реализовать «Таблицу для каждой иерархии»
После реализации префикса таблицы я реализовал TPH в соответствии с этим описанием https. ://www.learnentityframeworkcore.com/inheri ... -hierarchy
Это реализация:

Код: Выделить всё

public abstract class Parent
{
// ...
}

public class ChildA : Parent
{
// ...
}

public class ChildB : Parent
{
// ...
}

internal class EcroDbContext : DbContext
{
private string tablePrefix = "APP_PREFIX_";

public DbSet Schedules { get; set; } = null;

public DbSet ChildA { get; set; } = null;
public DbSet ChildB { get; set; } = null;

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string user = "xxx";
string password = "xxx";
string dbName = "xxx";
string conString = "User Id=" + user + ";Password=" + password + ";Data Source=" + dbName;

optionsBuilder.UseOracle(conString, x => x.MigrationsHistoryTable(tablePrefix + "ef_migration_history", null));
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);

modelBuilder.Entity
().ToTable(tablePrefix + "Jobs");

// Add prefix to each table.
// When I remove this foreach, the TPH works fine
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
modelBuilder.Entity(entity.ClrType).ToTable(tablePrefix + entity.GetTableName());
}
}
}
Когда я запускаю Add-Migration InitialMigration, я получаю следующую ошибку:

Невозможно создать 'DbContext' типа ''. Исключение «Оба «ChildB» и «ChildA» сопоставлены с таблицей «APP_PREFIX_APP_PREFIX_APP_PREFIX_Jobs». Все типы сущностей в иерархии, отличной от TPH (без дискриминатора), должны быть сопоставлены с разными таблицами.

Ошибка гласит, что «все типы сущностей в не-TPH должны сопоставлять другую таблицу», но я думал, что реализовал TPH для упомянутых классов. Сначала я думал, что реализовал это неправильно, но когда я удаляю часть префикса таблицы из части OnModelCreating, кажется, все работает нормально.
Это означает, что реализация префикса таблицы вызывает проблемы с реализацией TPH. Как устранить эту ошибку?
[РЕШЕНО]
Я заметил, что префикс добавляется 3 раза для Таблица вакансий. Как я могу это решить?

Подробнее здесь: https://stackoverflow.com/questions/779 ... mework-cor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Решение проблем наследования и миграции TPH в Entity Framework Core с многопроектной архитектурой
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Решение проблем наследования и миграции TPH в Entity Framework Core с многопроектной архитектурой
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как запросить все поля модели наследования TPH в Entity Framework Core
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • EF Core - наследование без TPH до одиночной таблицы
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Entity Framework Core 8. Ошибка случайной ссылки на объект FindAsync @ System.Data.Entity.Core.Common.Internal.Materiali
    Anonymous » » в форуме C#
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»