Mac下.NET Core 2.0:SQLite配置时如何用dotnet ef迁移SQL Server
如何在.NET Core 2.0(Mac)下用EF Core迁移到SQL Server
我来帮你一步步搞定这个问题——从SQLite切换到SQL Server并使用EF Core迁移其实很清晰,结合你的环境(Mac + .NET Core 2.0 + 开发模式下的StartupDevelopment类),按下面的步骤操作即可:
1. 安装EF Core SQL Server相关包和工具
首先确保你的项目引用了SQL Server的EF Core提供程序,同时安装全局的EF Core工具(注意指定2.0版本,和你的.NET Core版本匹配):
# 添加SQL Server EF Core包 dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 2.0.0 # 安装EF Core工具(全局) dotnet tool install --global dotnet-ef --version 2.0.0
2. 配置SQL Server连接字符串
在appsettings.Development.json中添加SQL Server的连接串,替换掉原来的SQLite连接串(或者新增一个,不过建议直接替换开发环境的默认连接):
{ "ConnectionStrings": { "DefaultConnection": "Server=localhost,1433;Database=MoviesLibrary;User Id=sa;Password=YourStrongPassword123!;TrustServerCertificate=True;" } }
提示:Mac上通常用Docker运行SQL Server容器,所以地址一般是
localhost,1433;如果用Azure SQL Database,直接替换成对应的连接串即可。
3. 修改StartupDevelopment中的DbContext配置
打开你的StartupDevelopment类,找到ConfigureServices方法,把原来的SQLite配置替换为SQL Server:
public void ConfigureServices(IServiceCollection services) { // 替换原有的AddSqlite配置 services.AddDbContext<YourDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); // 其他服务配置(比如MVC、依赖注入等)保持不变 }
注意:把YourDbContext替换成你实际的DbContext类名称
4. 生成SQL Server专属迁移文件
在终端中进入项目根目录,运行以下命令生成迁移文件(如果有多个DbContext,记得指定--context参数):
dotnet ef migrations add InitialSqlServerMigration --context YourDbContext
这个命令会在项目的Migrations目录下生成新的迁移文件,记录从SQLite schema到SQL Server schema的变化。
5. 应用迁移到SQL Server
最后执行迁移命令,将schema同步到SQL Server数据库:
dotnet ef database update --context YourDbContext
额外注意事项
- 你的
Program.cs中使用了UseStartup("MoviesLibfrary")(应该是笔误,建议改成MoviesLibrary),这是按程序集名称加载Startup类,.NET Core会自动根据ASPNETCORE_ENVIRONMENT环境变量(当前是Development)加载StartupDevelopment类,确保这个类在正确的程序集内即可。 - 如果之前有针对SQLite的迁移,不需要删除,EF Core会根据当前DbContext的配置生成独立的SQL Server迁移,两者互不干扰。
- 确保你的SQL Server实例处于运行状态,并且连接串中的用户名、密码、端口等信息正确,Mac上可以用
telnet localhost 1433测试连接是否通畅。
内容的提问来源于stack exchange,提问作者iJK
相关产品推荐
相关产品推荐

