2016-02-19 73 views
0

在新的WebAPI項目中(嘗試使用ASP.NET Core 1.0),我們需要使用它們提供的ADO.NET提供程序查詢遺留數據庫「Pervasive SQL」。但是他們沒有EF6供應商,所以我們使用EF5卡住了。dnx46至少需要.NET Framework 4.5.1嗎?

跳過Entity Framework並使用ADO.NET PSqlConnection直接需要「System.Data 2.0.0.0」。這讓我認爲提供者是在.NET Framework 2.0(或3.5)上編譯的。

project.json

"frameworks": { 
    "net451": { }, 
    "dnx46": { 
     "dependencies": { 
     "EntityFramework": "5.0.0", 
     "Pervasive.Data.SQLClient.Entity": "1.0.0-*", 
     "Pervasive.Data.SqlClient": "1.0.0-*", 
     "Pervasive.Data.Common": "1.0.0-*" 
     } 
    } 
    } 

運行 「DNU構建」 結果到以下異常

xx\..\Controllers\ValuesController.cs(22,18): DNX,Version=v4.6 error CS0012: The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. 

Build failed. 
    0 Warning(s) 
    2 Error(s) 

真正的問題:是否dnx46至少需要的.NET Framework 4.5.1? 或者它是否可以從ASP.NET Core 1.0中引用.NET Framework 3.5(或2.0)?

回答

1

名字對象的版本已經告訴你:它需要.NET Framework 4.6。

對於4.5.1,您需要dnx451綽號。

但實質是,4.5是使用新的ASP.NET Core 1.0(ASP.NET 5)的最低框架。你可以看到矩陣,以及在github上的「.Net Platform Standard」頁面上如何使用綽號。

觀察

  • 如果庫的目標.NET平臺標準版1.3,它只能在.NET框架4.6或更高版本,通用Windows平臺10(UWP),DNX核心5.0和Mono運行/ Xamarin平臺。
  • 如果庫的目標是.NET平臺標準版本1.3,則它可以使用所有以前的.NET平臺標準版本(1.2,1.1,1.0)中的庫。
  • 最早支持.NET平臺標準版本的.NET Framework是.NET Framework 4.5。這是因爲用作.NET平臺標準基礎的新的可移植API表面區域(又名基於System.Runtime的表面區域)僅在該版本的.NET Framework中可用。定位.NET Framework < = 4.0需要多重定位。
  • 每個.NET平臺標準版本都支持更多的API表面,這意味着它可以在更少的平臺上使用。隨着平臺的更新,他們的新版本將跳入更新的.NET平臺標準版本。
  • 停止更新的平臺 - 比如Windows Phone上的Silverlight - 只會在最早的.NET平臺標準版本中提供。

注意

請注意,綽號描述有當前每晚構建。對於「Class Library(Package)」,對於當前的RC1版本,即對於dnx應用程序(ASP.NET,控制檯,單元測試項目)和netdotnet,它有dnxdnxcore。在RC2當前版本和RC中,它將是netnetstandard(另請參閱this answer)。

+0

我只需要這個確認,所以我們不能使用我們現有的ADO.NET提供程序,導致我們現在必須退後一步到ASP.NET MVC 5,直到他們重定向.NET 4.5框架。或者你看到另一個解決方案能夠使用Entity Framework ..或者使用NHibernate,但這可能比現在降級更糟糕。 – rfcdejong

+0

@rfcdejong:EntityFramework 6.x應該與4.5.x,NHinerbate dunno一起工作。 Multitargeting僅適用於圖書館/包裝 – Tseng

+0

Pervasive沒有編寫EF6提供商,總是落後多年。就像他們今年上個月的最新提供商似乎正在引用.NET Framework v2.0一樣。 – rfcdejong

相關問題