Создание общих интерфейсов для нескольких похожих баз данных в Entity Framework - PullRequest
0 голосов
/ 04 июля 2018

В настоящее время я сталкиваюсь с проблемой работы с несколькими базами данных, которые очень похожи друг на друга, но имеют некоторые различия в их структуре. По унаследованным причинам обновление базы данных до всех, имеющих одинаковую структуру, невозможно. Моя текущая структура проекта выглядит следующим образом:

public DBContextA : DBContext
{
    DBSet<TypeA> TypeA { get; }

    // Other DBSets
}

public DBContextB : DBContext
{
    DBSet<TypeB> TypeB { get; }

    // Other DBSets
}

public interface ICommon
{
    long ID { get; set; }
}

public class TypeA : ICommon
{
    long ID { get; set; }

    // Other Properties
}

public class TypeB : ICommon
{
    long ID { get; set; }

    // Other Properties
}

Теперь я хочу запросить все ICommons из DBContext. Мой текущий код выглядит так:

// GetContextByConnection gets the context via reflection based on the selected database
using (var context = GetContextByConnection(connection))
{
    return context.Set<ICommon>().ToList();
}

Выбор правильной базы данных работает с перегрузкой ConnectionString DBContext, но я получаю исключение

"the entity type ICommon is not part of the model for the current context"

что имеет смысл. Но вопрос в том, как я могу запросить ICommons?

...