请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 6731|回复: 5

c# - entityframework core - switch databases

[复制链接]

16

主题

26

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2020-1-27 12:24:02 | 显示全部楼层 |阅读模式
更换数据库之后,如果旧的Migrations导致数据库错误,可按照以下步骤重新生成Migrations:
1. 删除所有existing migrations(包含:DataContextModelSnapshot), 直接文件删除就可以。
2. 安装要更换数据库DataProvider的nuget package,例如:SqlServer的nuget package为:Microsoft.EntityFrameworkCore.SqlServer。
其他数据库请参考:https://docs.microsoft.com/en-us/ef/core/providers/?tabs=dotnet-core-cli
3. 在DataContext的OnConfiguring方法中指定要更换的数据库(比如如下代码中使用的SqlServer):
  1. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){    optionsBuilder.UseSqlServer(@"Server=localhost;Database=mydatabase;User ID=sa;Password=password;");}
复制代码
4. 执行以下命令:
  1. dotnet ef migrations add InitialAgain -p yourProject -s yourStartupProject
复制代码
例如:如果发生以下错误:
System.InvalidOperationException: Services for database providers 'Microsoft.EntityFrameworkCore.Sqlite', 'Microsoft.EntityFrameworkCore.SqlServer' have been registered in the service provider. Only a single database provider can be registered in a service provider. If possible, ensure that Entity Framework is managing its service provider by removing the call to UseInternalServiceProvider. Otherwise, consider conditionally registering the database provider, or maintaining one service provider per database provider.
则说明你指定了多次database providers,删掉你不想指定的即可(例如以上错误信息中的Microsoft.EntityFrameworkCore.Sqlite)。
一般你会在Startup.cs中指定DataContext,例如以下代码, 注释掉,或者改成你需要的数据库即可,请注意安装相关的nuget packages。
  1. services.AddDbContext(opt =>{    opt.UseLazyLoadingProxies();    opt.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection"));});
复制代码
 
                                                                                                                        
                                                    
  • 点赞                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        yuxuac                                                                发布了132 篇原创文章 · 获赞 20 · 访问量 30万+                                                                                            私信                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:sql server示例
下一篇:第171场周赛
回复

使用道具 举报

0

主题

28

帖子

598

积分

高级会员

Rank: 4

积分
598
发表于 2020-1-28 18:13:20 | 显示全部楼层
这东西我收了!谢谢楼主![www.12360.co]
回复

使用道具 举报

0

主题

13

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 2020-2-4 11:33:46 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

0

主题

21

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
发表于 2020-2-11 00:42:11 | 显示全部楼层
其实我一直觉得楼主的品味不错!呵呵![www.12360.co]
回复

使用道具 举报

0

主题

25

帖子

535

积分

高级会员

Rank: 4

积分
535
发表于 2020-2-12 01:57:21 | 显示全部楼层
这个帖子不回对不起自己![www.12360.co]
回复

使用道具 举报

0

主题

20

帖子

430

积分

中级会员

Rank: 3Rank: 3

积分
430
发表于 2020-2-15 00:12:05 | 显示全部楼层
楼主太厉害了!楼主,I*老*虎*U![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-29 14:05 , Processed in 0.186304 second(s), 33 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表