使用EF Core的CodeFirst建模数据库(我的数据库是MySql)时,在上下文类中做一些数据库的配置时,比如HasForeignKey之类的,正常在OnModelCreating配置时,代码如下:
modelBuilder.Entity<Post>(entity => { entity.HasOne(d => d.Blog) .WithMany(p => p.Post) .HasForeignKey(d => d.BlogId); });
在MySql数据库中却不能显示出外键,这就很迷。而且有时候我需要修改已经使用CodeFirst生成的列,比如:
modelBuilder.Entity<Post>(entity => { entity.Property(p=>p.Content).HasColumnName("PostContents").HasColumnType("text").IsRequired(); });
然后,我将列名修改为Contents时:
modelBuilder.Entity<Post>(entity => { entity.Property(p=>p.Content).HasColumnName("Contents").HasColumnType("text").IsRequired(); });
就如此配置,一开始是没有报错,但是MySql数据库中的列名没有改过来,不知道为什么,怎么刷新也没有用。实在不知道是我代码有问题还是别的问题。但是我重新配置了另外的一个示例项目就没有问题,而这个项目就有问题。
相关问题
- 问个ef core 投影问题
- Entity Framework Core如何设置3个表联合查询(Join)
- asp.net core3.1使用EF Core出现:'OFFSET' 附近有语
- 关于使用 dotnet ef 迁移到 docker mysql 容器的疑问
- 请问EF中按天筛选到EFcore中要怎么修改?
迁移了吗?
碰到这种情况,吓得吓死了,当然一般都是说明最基础的EF知识,都没掌握好。
很简单,还技术债务。创建一个最简单的项目,啥都没有,只有EF,然后把你说的这些情况都一一测试一遍,
最好再对照着微软的EF教程演练一遍,看看别人怎么做的,什么特殊情况怎么处理。
否则下次还是这样。
EF是可以拿起来就用,不代表不用学习各种不同情况的处理。
微软教程练习一遍:
ASP.NET Core MVC with Entity Framework Core - Tutorial 1 of 10