是否有实体框架从数据库中生成包含正确字符串类型的模型类

本文关键字:字符串 包含正 类型 模型 实体 框架 数据库 是否 | 更新日期: 2023-09-27 18:20:35

在开始开发之前,我通常会与DBA一起设计数据库表。在几乎所有的实例中,我都使用varchar数据类型在SQL数据库中存储字符串。

当我使用EF Power Tools生成模型类时,列名和长度会正确生成,但我总是必须返回并指定HasColumnType("varchar");,因为默认情况下,所有内容都是nvarchar(我通过查看EF生成的查询以及它需要将()CAST()转换为varchar的位置来了解这一点)。

有没有什么方法可以从我的数据库中生成我的模型类,并让EF知道正确的数据类型(varchar和nvarchar)?这意味着,我是否可以为我的varchar(50)列自动生成C#模型类,以显示为:

this.Property(t => t.MyColumn)
                .HasMaxLength(50)
                .HasColumnType("varchar");  

谢谢。

是否有实体框架从数据库中生成包含正确字符串类型的模型类

当然,在OnModelCreating方法中,使用以下方法:

modelBuilder.Properties<string>().Configure(c => c.HasColumnType("varchar"));

如果仍需要某些字符串列为NVARCHAR,则可以在之后的特定属性上指定使用此命令。根据微软的说法,FluentAPI以"最后胜利"的方式运作。因此,您可以对任何属性或属性组执行任何操作,如果稍后对同一属性进行另一次更改,则稍后指定的属性将是最终结果。