none
Data Mapping RRS feed

  • Вопрос

  • Здравствуйте!

    Возникла задача маппинга данных из нескольких (не одновременно) SQL баз данных с различной структурой в одну объектную модель. Причем заранее не известна структура этих баз, но точно известно, что БД содержит все необходимые данные для построения объектной модели.  Я думаю идеалом был бы метод, когда на вход программе подается xml-файл с параметрами маппинга, с помощью которого можно "тянуть" данные из базы в нашу объектную модель. Искал стандартные подходы для решения этой задачи, но ничего хорошего пока не нашел. Посоветуйте что-нибудь, возможно Entity Framework это умеет?

    30 декабря 2012 г. 19:54

Ответы

  • Дело в том, что Вы нарушаете основную идею статического отображения, коим является EF. В вашем случае получается антипаттерн. Ещё один, думаю наиболее оптимальный вариант, использовать абстракции. Модель будет одна, а вот для каждого случая будет своя реализация. Её Вы и можете подключать динамически с использованием контейнеров IoC.
    • Изменено YatajgaModerator 9 января 2013 г. 14:28
    • Помечено в качестве ответа Abolmasov Dmitry 11 января 2013 г. 12:18
    9 января 2013 г. 14:27
    Модератор

Все ответы

  • Странно, если Вы заранее не знаете модель данных, а строите её динамически, то как Вы собираетесь работать с ней. Entity Framework - отображает уже существующую структуру БД в объекты, т.е. схема известна заранее. Вот обратное можно проделать легко, используя Code First.
    30 декабря 2012 г. 21:05
    Модератор
  • Я знаю какие объекты хочу получить, не знаю только заранее где хранятся поля для этих объектов, как названы таблицы и т.п. Кстати есть одно упрощение - мне надо только считывать данные.
    31 декабря 2012 г. 8:14
  • Привет.

    Попробуйте посмотреть на проект Entity Framework Model Adapter, возможно он поможет в решении вашей задачи. Также есть интересная статья - Entity Framework 4.1 – Change mappings at runtime

    Но в любом случае EntityFramework не очень хорошо поддерживает то, что вы хотите. И возможно реализовать это будет не просто.


    Для связи [mail]

    9 января 2013 г. 14:20
  • Дело в том, что Вы нарушаете основную идею статического отображения, коим является EF. В вашем случае получается антипаттерн. Ещё один, думаю наиболее оптимальный вариант, использовать абстракции. Модель будет одна, а вот для каждого случая будет своя реализация. Её Вы и можете подключать динамически с использованием контейнеров IoC.
    • Изменено YatajgaModerator 9 января 2013 г. 14:28
    • Помечено в качестве ответа Abolmasov Dmitry 11 января 2013 г. 12:18
    9 января 2013 г. 14:27
    Модератор