幸运@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