Entity Framework 6 в Mono 3.0.10 при подключении SqlServer вызывает исключение, несовместимое с поставщиком

Я создал простое консольное тестовое приложение, которое отлично работает с Entity Framework 5 и подключает базу данных SqlServer. Затем я попытался преобразовать проект для работы с Mono-3.0.10, заменив ссылку на проект с MS EF5 на Mono EF6, добавив ссылку на моно EntityFramework.SqlServer.dll и обновив файл App.Config до версии Entity Framework. 6.0.0.0. Мне удалось собрать проект с Visual Studio 2012 под профилем Mono 3.0.10 без каких-либо ошибок.

Теперь, когда я пытаюсь запустить проект под Mono, я получаю исключение:

System.Data.Entity.Core.ProviderIncompileException: поставщик не вернул экземпляр ProviderManifest ----> System.UriFormatException: неверный Uri. Не удалось определить формат Uri: System.Data.Resources.SqlClient.SqlProviderServices.ProviderManifest.xml.

Может ли кто-нибудь помочь или хотя бы предоставить пример кода, показывающий, как вы это делаете с Mono? Спасибо


person user1444648    schedule 19.06.2013    source источник


Ответы (1)


Я сделал то же самое и получил ту же ошибку. Мое решение состояло в том, чтобы скомпилировать EntityFramework из исходного кода (Codeplex, версия 6.1.0alpha) и изменить строку кода в SqlProviderManifest.cs.

    private static XmlReader GetXmlResource(string resourceName)
    {
        //return XmlReader.Create(typeof(SqlProviderManifest).Assembly().GetManifestResourceStream(resourceName), null, resourceName);
        return XmlReader.Create(typeof(SqlProviderManifest).Assembly().GetManifestResourceStream(resourceName), null, String.Empty);
    }

Нехорошо, но решил мою проблему, пока я не попробовал какой-то действительно странный лямба-запрос или не попытался что-то записать в базу данных.

person user3130076    schedule 26.12.2013