最近需要写个小应用,就用了 dotnet core 6.0 的 MVC WebApplication 模板实现了下,这里记录一下期间遇到的问题。

EF Core 和 EF6 的区别

  • EF: 它是适用于.NET 的对象关系映射程序 (ORM),现在的 EF6 从 EF4, EF5 发展而来,已经是久经沙场。EF7 会在 2022 年 11 月发布。

  • EF Core: 是更现代、可扩展的轻量级实体框架版本,与 EF6 的功能和优点非常相似。 EF Core 则完全进行了重写,包含许多 EF6 没有的新功能,但还是缺少 EF6 中最高级的一些映射功能。

  • 该用 EF 还是 EF Core:如果 EF Core 能满足需求,可以优先考虑使用 EF Core。比较 EF Core 和 EF6 中更详细地讨论二者的差异。

EF Core nvarchar(max) 类型不支持

因为应用比较小,就使用了 Sqlite 作为 DB。 在执行 初始化 DB 表的时候,遇到了第一个问题:sqlite 不支持 nvarchar(max) 类型。

  • 解决办法也比较简单,修改成支持的类型就行了。比如 nvarchar(4000),或者直接使用 Text 类型。另外 SqlServer 的 nvarchar(max) 类型最大可以存储 2G,Sqlite 的 string 类型最大值是 1 billion。

  • 官网文档里有特意提到这个注意事项:nvarchar(max)decimal(18, 2) 是 EF Core 的默认值,但大多数情况下都不是最合适的选项。
    "nvarchar(max)"