升级.Net Core RC2的那些事(三)——Entity Framework升级

第三篇是Entity Framework升级

修改project.json

把原来 EntityFramework 的包 换成 Microsoft.EntityFrameworkCore

版本从 7.0.0-rc1-final 改为 1.0.0-rc2-final

对照表如下:

RC1 Package RC2 Equivalent
EntityFramework.MicrosoftSqlServer 7.0.0-rc1-final Microsoft.EntityFrameworkCore.SqlServer 1.0.0-rc2-final
EntityFramework.SQLite 7.0.0-rc1-final Microsoft.EntityFrameworkCore.SQLite 1.0.0-rc2-final
EntityFramework7.Npgsql 3.1.0-rc1-3 NpgSql.EntityFrameworkCore.Postgres <to be advised>
EntityFramework.SqlServerCompact35 7.0.0-rc1-final EntityFrameworkCore.SqlServerCompact35 1.0.0-rc2-final
EntityFramework.SqlServerCompact40 7.0.0-rc1-final EntityFrameworkCore.SqlServerCompact40 1.0.0-rc2-final
EntityFramework.InMemory 7.0.0-rc1-final Microsoft.EntityFrameworkCore.InMemory 1.0.0-rc2-final
EntityFramework.IBMDataServer 7.0.0-beta1 Not yet available for RC2
EntityFramework.Commands 7.0.0-rc1-final Microsoft.EntityFrameworkCore.Tools 1.0.0-preview1-final
EntityFramework.MicrosoftSqlServer.Design 7.0.0-rc1-final Microsoft.EntityFrameworkCore.SqlServer.Design 1.0.0-rc2-final

增加EF cli工具

在 project.json 的 tools 配置节中加入

		"Microsoft.EntityFrameworkCore.Tools": {
			"version": "1.0.0-preview1-final",
			"imports": [
				"portable-net45+win8+dnxcore50",
				"portable-net45+win8"
			]
		}

EF的相关cli命令,由原来的 dnx ef 改为 dotnet ef,具体可以通过 dotnet ef --help 来查看

修改代码中的命名空间

把原来的 Microsoft.Data.Entity 改为 Microsoft.EntityFrameworkCore

这里可以批量查找替换掉

修改Startup.cs

RC2中已经移除了AddEntityFramework()、AddInMemoryDatabase()、AddSqlServer(),所以我们也要在代码中相应的移除掉它们,以我自己的项目中为例子

原来为:

		public void ConfigureServices(IServiceCollection services)
		{
#if DEBUG
			services.AddEntityFramework()
				.AddInMemoryDatabase()
				.AddDbContext<EFContext>(option => {
					option.UseInMemoryDatabase();
				});
#else
			services.AddEntityFramework()
				.AddSqlServer()
				.AddDbContext<EFContext>(option => {
					option.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
				});
#endif
			services.AddApplicationInsightsTelemetry(Configuration);
			// Add framework services.
			services.AddMvc();
		}

现在则改为:

		public void ConfigureServices(IServiceCollection services)
		{
#if DEBUG
			services.AddDbContext<EFContext>(option =>
			{
				option.UseInMemoryDatabase();
			});
#else
			services.AddDbContext<EFContext>(option =>
			{
				option.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
			});
#endif
			// Add framework services.
			services.AddMvc();
		}

 

不允许评论