每个数据库提供程序都有不同的数据类型,可以映射到相同的 C# 类型(Guid / DateTime)
我想根据使用的数据库提供程序配置列类型。
例如:
public class MyClass
{
public Guid Id { get; set; }
public DateTime CreatedOn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果使用 Sql Server
DateTime
为datetime2(0)
如果使用 MySql Server
DateTime
为TIMESTAMP
Guid
为CHAR(36)
所以,我正在寻找类似于下面的代码:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
if(IsSqlServer)
{
modelBuilder.Entity<MyClass>()
.Property(e => e.CreatedOn)
.HasColumnType("datetime2(0)")
;
}
else if(IsMySqlServer)
{
modelBuilder.Entity<MyClass>()
.Property(e => e.CreatedOn)
.HasColumnType("TIMESTAMP")
;
modelBuilder.Entity<MyClass>()
.Property(e => e.Id)
.HasColumnType("CHAR(36)")
;
}
}
Run Code Online (Sandbox Code Playgroud)
在 EF Core …