首页 新闻 会员 周边

EF Core的Code First建模问题请教

0
悬赏园豆:10 [已解决问题] 解决于 2018-11-16 10:44

使用EF Core的CodeFirst建模数据库(我的数据库是MySql)时,在上下文类中做一些数据库的配置时,比如HasForeignKey之类的,正常在OnModelCreating配置时,代码如下:

modelBuilder.Entity<Post>(entity =>
{
entity.HasOne(d => d.Blog)
.WithMany(p => p.Post)
.HasForeignKey(d => d.BlogId);
});
View Code

在MySql数据库中却不能显示出外键,这就很迷。而且有时候我需要修改已经使用CodeFirst生成的列,比如:

modelBuilder.Entity<Post>(entity =>
{
entity.Property(p=>p.Content).HasColumnName("PostContents").HasColumnType("text").IsRequired();
});
View Code

然后,我将列名修改为Contents时:

modelBuilder.Entity<Post>(entity =>
{
entity.Property(p=>p.Content).HasColumnName("Contents").HasColumnType("text").IsRequired();
});
View Code

就如此配置,一开始是没有报错,但是MySql数据库中的列名没有改过来,不知道为什么,怎么刷新也没有用。实在不知道是我代码有问题还是别的问题。但是我重新配置了另外的一个示例项目就没有问题,而这个项目就有问题。

又见阿郎的主页 又见阿郎 | 初学一级 | 园豆:163
提问于:2018-07-13 20:48
< >
分享
最佳答案
0

碰到这种情况,吓得吓死了,当然一般都是说明最基础的EF知识,都没掌握好。

很简单,还技术债务。创建一个最简单的项目,啥都没有,只有EF,然后把你说的这些情况都一一测试一遍,

最好再对照着微软的EF教程演练一遍,看看别人怎么做的,什么特殊情况怎么处理。

否则下次还是这样。

 

EF是可以拿起来就用,不代表不用学习各种不同情况的处理。

微软教程练习一遍:

ASP.NET Core MVC with Entity Framework Core - Tutorial 1 of 10

收获园豆:10
爱编程的大叔 | 高人七级 |园豆:30839 | 2018-07-14 09:37

我也是这么觉得的,的确是在还技术债,我目前打算测试的解决方法是在ef core的code first中使用alter原生sql语句来修改数据库

又见阿郎 | 园豆:163 (初学一级) | 2018-07-14 11:30
其他回答(1)
0

迁移了吗?

吴瑞祥 | 园豆:29449 (高人七级) | 2018-07-14 00:06

并没有

支持(0) 反对(0) 又见阿郎 | 园豆:163 (初学一级) | 2018-07-14 11:29

目前的打算是测试下原生的alter语句来修改。

支持(0) 反对(0) 又见阿郎 | 园豆:163 (初学一级) | 2018-07-14 11:31

@又见阿郎: 那你扯啥..又不迁移.又要ef按你的想法去自动改数据库结构?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2018-07-14 12:00

@吴瑞祥: 刚刚回复错了,我看成了解决了吗。迁移了,不迁移数据库里面怎么有列名,我要的是修改了dbcontext的onmodelcreating方法之后,并使用efcore命令add-migration等生成新的数据库中没有我需要删除的那列。你这个问题也问的有意思。

支持(0) 反对(0) 又见阿郎 | 园豆:163 (初学一级) | 2018-07-14 13:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册