2013-10-18 27 views
9

我似乎無法將Entity Framework 6.0.1安裝到我擁有的幾個F#項目上。這是錯誤消息我得到:從NuGet獲取EF 6以安裝在F#項目上

執行腳本文件 'C:\源\ payboard \ PayboardWeb \包\ EntityFramework.6.0.1 \工具\ install.ps1'。 使用「2」參數調用「SetData」的異常:「在程序集中鍵入'Microsoft.VisualStudio.FSharp.ProjectSystem.Automation.OAProject'FSharp.ProjectSystem.Base,Version = 12.0.0.0,Culture = neutral, 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#項目上安裝得很好。

任何建議的解決方法?

+0

我認爲你是非常幸運的,直到MS將'Microsoft.VisualStudio.FSharp.ProjectSystem.Automation.OAProject'類型更改爲可序列化。您始終可以在用戶語音網站上爲F#提交此問題,以查看是否獲得更多的愛。我懷疑英孚團隊將能夠用基礎語言修復某些內容。 –

+1

如果您從EF團隊的以下帖子的評論中讀到,團隊成員會回答您EF何時支持F#的問題。不知道它是否有幫助,但至少是官方承認。 http://blogs.msdn.com/b/adonet/archive/2013/10/31/ef6-performance-issues.aspx –

+0

我通過@ ScottWylie的鏈接挖掘並找到[工作項目891](https:// entityframework。 codeplex.com/workitem/891)提到。看來F#可能在EF的下一個版本中工作。 –

回答

5

這在EF6.1中變得暢通無阻。 Here是工作項目。

請注意,這裏的問題不是EF本身,而是如何將包添加到項目中。這讓我認爲,在EF6.1發佈之前,你可以通過解壓縮包並將引用手動添加到項目中來解決這個問題。那麼你將不得不相應地更新你的配置。 (您也可以創建一個臨時C#項目添加EF6 NuGet包,它將爲您提供EntityFramework和EntityFramework.SqlServer dll,您可以將它們複製到F#項目中,並且還可以複製一個配置文件,從中可以比使用你自己的正確配置)

+0

我正在嘗試創建一個可以完成所有數據庫事務的C#項目,但是當我試圖查詢數據庫時,EF無法訪問MySQL服務器,因爲web.config配置不正確,即使app.config因爲C#項目很好。這就是我將嘗試的:將所有相關的EF配置從app.config轉移到web.config,但是您的解決方案似乎值得嘗試。這是你的50分哈哈。 –

+1

NuGet包默認安裝SqlServer提供程序併爲SqlServer配置應用程序。如果您想使用MySql,您需要安裝MySql提供程序並在配置文件中更改提供程序註冊。 – Pawel

+0

是的,我這樣做,但由於配置文件在另一個項目中,EF無法達到它。 –