Nev*_*ver 4 c# entity-framework-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
DateTime为datetime2(0)如果使用 MySql Server
DateTime为TIMESTAMPGuid为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 中可以这样做吗?(撰写本文时最新稳定版 3.1)
在 DbContext 中,您可以使用 this.Database.ProviderName
if (this.Database.ProviderName == "Microsoft.EntityFrameworkCore.SqlServer")
{
modelBuilder.Entity<MyClass>()
.Property(e => e.CreatedOn)
.HasColumnType("datetime2(0)")
;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |