EF 4 - тот же контекст, другой магазин? - PullRequest
0 голосов
/ 14 февраля 2011

у нас есть решение .net, которое работает в разных представлениях (WinForms, asp.net).
В качестве уровня доступа к данным мы используем структуру сущностей 4. В качестве базы данных используются базы данных sql server и sqlCe.
Sqlce используется для хранения копии оригинальной базы данных для толстого клиента.

Итак, через это созвездие приходит мой вопрос:

Можно ли использовать один и тот же ObjectContext для двух разных хранилищ данных?
(те же БД в sql server и sqlce)
или лучше использовать POCO или другую архитектуру?

Спасибо

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Хорошо, у меня все работало нормально.

1. Заменил файл ssdl.Как описано в этой статье: Подготовка модели Entity Framework для поддержки нескольких провайдеров

2. Установите действие сборки файла * .ssdl в качестве встроенного ресурса.

3. Изменил мою строку подключения

    public static String GetEntityConnectionString()
    {
        string csdl = "Test";
        string ssdl = "Namespace.NewSsdl.ssdl"; //multi provider support (.ssdl embedded in ressource)
        string msl = "Test";

        EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();

        //Provider
        builder.Provider = "System.Data.SqlClient";
        builder.ProviderConnectionString = GetProviderConnectionStringPL();

        //Metadata
        builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{1}|res://*/{2}.msl", csdl, ssdl, msl);

        return builder.ToString();

    }
1 голос
/ 14 февраля 2011

Если ваша локальная база данных (SQL CE) имеет точно такую ​​же структуру, что и большая база данных (SQL Server), вы можете использовать то же отображение, передавая другую строку подключения в конструктор ObjectContext. Entities / POCOs будут одинаковыми.

Если ваша локальная база данных не имеет одинаковой структуры, вам нужны два набора сопоставления (EDMX), и вам, вероятно, понадобятся два разных контекста (если вы не используете ObjectContext напрямую). Если ваше локальное сопоставление использует те же сущности, что и сопоставление вашего сервера, вы сможете сопоставить их с теми же классами POCO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...