none
Entity Framework работа с разными таблицами на основе одной модели RRS feed

  • Общие обсуждения

  • Доброго всем времени суток! Подскажите, кто знает, есть ли в Entity Framework способ использовать одну и ту же модель для работы с разными таблицами.

    Например, есть две таблицы абсолютно идентичные по набору полей, но имеющие разное содержимое (например TestTable и TestTableCopy), причем вторая база создается динамически. Известны только имена таблиц в БД.

    В настоящий момент я приловчился считывать данные следующим образом:

    var Items = Ent.Database.SqlQuery<TestTable>("select * from TestTable");
    
    var ItemsCopy = Ent.Database.SqlQuery<TestTable>("select * from TestTableCopy");


    В данном коде полученные данные автоматом приводятся к типу TestTable.

    Но я хочу иметь возможность полноценно работать с этими данными, например мне необходимо редактировать и добавлять новые записи в обе таблицы, используя тип TestTable. Модель используется как "тип" структуры таблицы.

    Как работать с несколькими таблицами, (обращаясь к ним по имени) и используя только одну модель данных?

    Заранее спасибо.

    25 ноября 2015 г. 0:44

Все ответы

  • Добрый день!

    https://msdn.microsoft.com/library/bb896233(v=vs.100).aspx

    25 ноября 2015 г. 7:20
  • Спасибо за ответ! Возможно, я не правильно понял статью или те возможности, которые в ней раскрываются, но по-моему там речь идет о том как замапить данные из двух таблиц в одну сущность, или я не прав?

    Мне каким-то макаром нужно работать с одной сущностью попеременно сопоставляя ее то с одной таблицей TableName то с другой, то с третьей.

    Т.е. подключил (DBSet<testTable>) сущность testTable к таблице с именем "Table1" сопоставил ее один в один, т.к. все поля одинаковы, поработал с контекстом, затем подключил testTable к таблице с именем "Table2", затем к Table3. Т.е. одна сущность на все таблицы.

    Необходимо сопоставлять сущность с заранее неизвестной таблицей по ее имени "на лету".

    Когда EF создает DbContext, как я понимаю, он автоматом ищет таблицы по именам сущностей и сопоставляет их по указанной схеме, так вот тут надо вмешаться и указать ему имя таблицы вручную.

    Возможно ли вообще такое?

    В наличии только список имен таблиц. 

    25 ноября 2015 г. 20:15