Получение EF 6 от NuGet для установки в проектах F#

Кажется, я не могу установить Entity Framework 6.0.1 для пары проектов F #, которые у меня есть. Это сообщение об ошибке, которое я получаю:

Выполнение файла сценария «C:\source\payboard\PayboardWeb\packages\EntityFramework.6.0.1\tools\install.ps1». Исключение, вызывающее «SetData» с аргументом (-ами) «2»: «Введите «Microsoft.VisualStudio.FSharp.ProjectSystem.Automation.OAProject» в сборке «FSharp.ProjectSystem.Base, версия = 12.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' не помечен как сериализуемый." В C:\source\payboard\PayboardWeb\packages\EntityFramework.6.0.1\tools\EntityFramework.psm1:633 char:5 + $domain.SetData('project', $Project) + ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SerializationException

System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта. в System.Data.Entity.ConnectionFactoryConfig.InitializeEntityFrameworkCommand.Execute() в System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(команда действия)

Кажется, на форумах EF6 есть открытая ошибка для него (https://entityframework.codeplex.com/workitem/891), но, насколько я могу судить, он не получил никакой любви.

EF6 прекрасно устанавливается в проектах, отличных от F#.

Любые предлагаемые обходные пути?


person Ken Smith    schedule 18.10.2013    source источник
comment
Я думаю, вам не повезло, пока MS не изменит тип «Microsoft.VisualStudio.FSharp.ProjectSystem.Automation.OAProject», чтобы он был сериализуемым. Вы всегда можете представить эту проблему на сайте User Voice для F#, чтобы узнать, получит ли она больше внимания. Сомневаюсь, что команда EF сможет что-то исправить в базовом языке.   -  person Scott Wylie    schedule 05.11.2013
comment
Если вы прочитаете комментарии к следующему сообщению от команды EF, кто-то из команды частично ответит на ваш вопрос о том, когда EF будет поддерживать F#. Не уверен, что это поможет, но это, по крайней мере, официальное признание. blogs.msdn.com/b/ адонет/архив/2013/10/31/   -  person Scott Wylie    schedule 05.11.2013
comment
Я перерыл ссылку @ScottWylie и обнаружил, что упоминается рабочий элемент 891. Похоже, F# может работать в следующей версии EF.   -  person Dan Lyons    schedule 10.02.2014


Ответы (1)


Это разблокируется в EF6.1. Здесь находится рабочий элемент.

Обратите внимание, что проблема здесь не в самом EF, а в том, как пакет добавляется в ваш проект. Это заставляет меня думать, что до тех пор, пока не будет выпущен EF6.1, вы, вероятно, могли бы обойти эту проблему, распаковав пакет и вручную добавив ссылки на сборки EF6 в свой проект. Тогда вам придется соответствующим образом обновить конфигурацию. (Вы также можете создать временный проект C#, добавив пакет EF6 NuGet, который предоставит вам библиотеки DLL EntityFramework и EntityFramework.SqlServer, которые вы можете скопировать в свой проект F#, а также файл конфигурации, который вы можете скопировать, из которого будет намного проще, чем с правильная конфигурация самостоятельно)

person Pawel    schedule 10.02.2014
comment
Я пытался создать проект C#, который бы выполнял все операции с базой данных, но когда я попытался запросить базу данных, EF не смог связаться с сервером MySQL, поскольку файл web.config не был настроен должным образом, хотя файл app.config в этот проект С# был в порядке. Вот что я попробую: перенести все соответствующие конфигурации EF из app.config в web.config, но ваше решение, похоже, стоит попробовать. Вот ваши 50 баллов, ха-ха. - person Ricardo Pieper; 11.02.2014
comment
Пакет NuGet по умолчанию устанавливает поставщика SqlServer и настраивает приложение для SqlServer. Если вы хотите использовать MySql, вам необходимо установить провайдера MySql и изменить регистрацию провайдера в файле конфигурации. - person Pawel; 11.02.2014
comment
Да, я так и сделал, но так как конфигурационный файл был в другом проекте, EF не мог до него добраться. - person Ricardo Pieper; 11.02.2014
comment
Та же ошибка была исправлена ​​​​с этим ответом: stackoverflow.com/questions/21483671/ - person radu florescu; 12.07.2015