2014-09-15 4 views
0

У меня возникла проблема с использованием разных баз данных в приложении mvc с Entity Framework 6. Наш клиент будет использовать собственную базу данных, которая может быть базой данных MySQL, PostgreSQL или Oracle.Использование различных баз данных с Entity Framework 6

Я создал файл .edmx для MySQL и PostgreSQL, эти модели работают индивидуально, но по возможности я хочу использовать только одну модель для всех баз данных. Базы данных будут иметь одинаковые таблицы и столбцы.

Так хочется сделать что-то вроде этого:

using (var connection = new DbConnection()) 
{ 
    string id = connection.Set<user>().First().Id; 
} 

DbConnection должен быть подключение к правой базе данных (вы можете увидеть, какие базы данных для использования в файле ресурсов)

Я встречая следующая проблема с базой данных первого подхода:

Я прочитал http://www.codeproject.com/Articles/82017/Preparing-an-Entity-Framework-model-for-multi-prov.aspx и когда я следовал инструкциям, я получил

MetadataException: невозможно загрузить указанное исключение ресурса метаданных.

Я пробовал все, чтобы найти файл .ssdl, но я просто не могу его найти.

Я делаю это правильно или кто-нибудь знает, есть ли лучший способ сделать это?

ответ

0

Я попытался сделать именно то, что вы пытаетесь сделать, но с MS SQL и Vista DB. Я следовал этому учебнику и столкнулся с той же проблемой.

Следуя руководству, у вас будет отдельный файл ssdl для каждой БД. Убедитесь, что вы установили его для копирования в выходной каталог, а затем соответствующим образом обновили строку подключения.

Чтобы установить его для копирования в выходную папку, щелкните правой кнопкой мыши файл ssdl в обозревателе решений и выберите «Копировать в каталог OUtput» в «Копировать, если новый».

Затем изменить часть метаданных строки подключения к чему-то вроде этого:

metadata=res://*/DataModel.csdl|c:\dev\program\bin\debug\DataModel.VistaDB.ssdl|res://*/DataModel.msl; 

Обратите внимание на путь к SSDL это путь к папке. Путь, который я слышу, - это путь, который я использовал. Вам необходимо будет изменить его соответственно

+0

Благодарим за отзыв. В какой папке вы поместили файл ssdl? И я не уверен, что должно быть изменено в строке подключения – DannyBiezen

+0

Я обновил свой ответ. Надеюсь, поможет! – Zeus82

Смежные вопросы