幸運@Claies不正確。我可以使用沒有Nuget的遷移。我解決了它,並不困難。
組件需要的是需要
18個組件(因爲它們都得到了6.1之後分裂成更模塊化的方式)。這些可以從可下載的Nuget包中提取。
EntityFramework.Relational, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
EntityFramework.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
EntityFramework.Sqlite, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.Extensions.Logging.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Remotion.Linq, Version=2.0.0.0, Culture=neutral, PublicKeyToken=fee00910d6e5f53b
System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.DependencyInjection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Caching.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.OptionsModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Caching.Memory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Data.Sqlite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Primitives, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Configuration.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Configuration.Binder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.PlatformAbstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
__EFMigrations表:
無需擔心這一點,因爲EF組件負責創建這個
遷移腳本
的NuGet 「添加遷移」 命令將3個文件的護理(遷移.cs,設計師.cs &快照),但實際上我發現只有一個遷移需要。
首先創建一個名爲「Migrations」的目錄。然後將它與.CS這種結構的文件:
[DbContext(typeof(BloggingContext))]
[Migration("151205_01")]
public class InitialMigration : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// create table, add columns/keys etc.
}
protected override void Down(MigrationBuilder migrationBuilder)
{
// opposite of "Up", ie. drop table
}
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
// can remain blank, not sure what its used for
}
}
我認爲它好這些文件的命名,如「YYMMDD-RR」,其中R =修訂,使他們爲了總排序,並在運行訂購。
如何申請移民
只要致電:
using(var db = new MyContext())
{
db.Database.Migrate();
}
EF 7做不到這一點的情況下實例化,但它可以做到在啓動應用程序時。如果有任何未完成的遷移,它們將運行。
就是這樣。
默認情況下,NuGet文件存儲在項目文件夾之外的「packages」目錄中,以便它們不必檢入源代碼管理;如果packages目錄在您第一次構建時不在機器上,那麼NuGet將下載相應的軟件包,因此不用於保存源代碼管理檢查是不成問題的。 – Claies
@Craies怎麼樣,我不希望它在部署時下載nuget包,或者在互聯網上有任何參考。 – sprocket12
那麼你不能使用遷移。遷移過程是一個非常複雜的過程,用於檢查數據庫,模型,創建向上/向下方法的基本代碼,管理__migrationHIstory表等等。嘗試手動完成此操作將非常容易出錯,並且在此時只需使用SQL Management Studio創建你想要的表就會更好。 – Claies