ASP.NET vNext MVC和Entity Framework問題


我正在嘗試創建一個小的ASP.NET vNext WebAPI + AngularJS + Entity Framework項目。但顯然,在EF7中有很多變化,所以我遇到了以下問題:

我更改了project.json如下:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "EntityFramework": "7.0.0-beta1",
    "EntityFramework.SqlServer": "7.0.0-beta1",
    "EntityFramework.Commands": "7.0.0-beta1",
    "Microsoft.AspNet.Mvc": "6.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta1"

在我的DataContext類中,我嘗試以下方法:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "EntityFramework": "7.0.0-beta1",
    "EntityFramework.SqlServer": "7.0.0-beta1",
    "EntityFramework.Commands": "7.0.0-beta1",
    "Microsoft.AspNet.Mvc": "6.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta1"

}

首先:為什麼命名空間System.Data.Entity更改為Microsoft.Data.Entity ?在任何microsoft msdn文章中我都找不到任何有關此更改的內容!

第二:整個Database.SetInitializer不再起作用了。它建議使用Microsoft.Data.Entity.Infrastructure命名空間,但該Database類不包含SetInitializer方法。

一般承認的答案

由於EF7仍處於預發布狀態,因此您在MSDN文章中找不到任何相關文檔;您需要查看EF7 GitHub Wiki以獲取任何信息。

在您試用EF7時請注意,這是新EF代碼庫開發的早期階段,並且有許多功能部分實現或尚未提供。

我相信SetInitializer是完全不同的實現之一;團隊正在避免使用靜態方法來提高框架的可測試性。

另請注意, 最新版本的EF77.0.0-beta3 ,但wiki提供了有關如何使用每晚構建的信息 。 (鑑於自VS2015 CTP6發布以來的嚴重變化,使用夜間構建可能會很粗糙。)


熱門答案

EF7更輕巧,更模塊化,支持新平台和非關係數據存儲。這些更改非常重要,因此一些底層API已發生變化,包括其命名空間。

新的輕量級特性意味著與以前的版本相比,幕後會自動發生更少的事情。 數據庫初始化程序已被刪除,因此無法按需創建數據庫。相反,您應該使用數據庫遷移自己控制此過程。有關更多信息: ASP.NET vNext(MVC6)Ground Up#3 - Entity Framework 7





許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因