小编Nev*_*ver的帖子

EF Core - 如何根据使用的数据库提供程序配置列类型

每个数据库提供程序都有不同的数据类型,可以映射到相同的 C# 类型(Guid / DateTime)

我想根据使用的数据库提供程序配置列类型。

例如:

public class MyClass
{
    public Guid Id { get; set; }
    public DateTime CreatedOn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果使用 Sql Server

  • 配置DateTimedatetime2(0)

如果使用 MySql Server

  • 配置DateTimeTIMESTAMP
  • 配置GuidCHAR(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 …

c# entity-framework-core

4
推荐指数
1
解决办法
348
查看次数

标签 统计

c# ×1

entity-framework-core ×1