EF Core MYSQL 生成表對映配置問題
阿新 • • 發佈:2018-12-25
Model表
public class Goods { public string ID { get; set; } public string CreatedBy { get; set; } public DateTime CreatedTime { get; set; } public string ModifiedBy { get; set; } public DateTime ModifiedTime { get; set; } public string GoodsName { get; set; } public int GoodsNum { get; set; } }
配置檔案
public class GoodsEntityTypeConfiguration : IEntityTypeConfiguration<Goods> { public void Configure(EntityTypeBuilder<Goods> builder) { builder.ToTable("Sample_Goods_01"); builder.HasKey(ci => ci.ID); builder.Property(ci => ci.ID).IsRequired(); builder.Property(cb => cb.CreatedBy) .IsRequired() .HasMaxLength(20); builder.Property(cb => cb.CreatedTime) .IsRequired(); builder.Property(cb => cb.ModifiedBy) .IsRequired() .HasMaxLength(20); builder.Property(cb => cb.GoodsName) .IsRequired(); builder.Property(cb => cb.GoodsNum) .IsRequired(); } }
在MYSQL裡,想生成ID儲存GUID
,開始的時候直接生成 string 生成 text
沒有達到我們的效果。ID應該為char(36)
,CreatedBy 應該為 varchar(20)
應該改為
public class GoodsEntityTypeConfiguration : IEntityTypeConfiguration<Goods> { public void Configure(EntityTypeBuilder<Goods> builder) { builder.ToTable("Sample_Goods_01"); builder.Property(ci => ci.ID).IsRequired().HasMaxLength(36).HasColumnType("char(36)"); builder.Property(cb => cb.CreatedBy) .IsRequired() .HasMaxLength(20).HasColumnType("varchar(20)"); builder.Property(cb => cb.CreatedTime) .IsRequired(); builder.Property(cb => cb.ModifiedBy) .IsRequired() .HasMaxLength(20).HasColumnType("varchar(20)"); builder.Property(cb => cb.GoodsName) .IsRequired().HasColumnType("varchar(20)"); builder.Property(cb => cb.GoodsNum) .IsRequired(); } }
參考:
Jeffcky,EntityFramework Core對映關係詳解
MVC - 10.CodeFrist
蝌蝌,EF6(CodeFirst)+MySql開發脫坑指南