如何使用注解或 Fluent API 指定列、表或数据库的排序规则?我知道 MySql Provider 有一些干净的方法。但是,除了执行原始 SQL 命令之外,我找不到任何用于 SQL Server 的方法。
问问题
3881 次
3 回答
4
EF Core 5中添加了用于数据库和列级别的 UseCollation() 。
于 2020-10-09T20:26:26.093 回答
2
看起来它根本不会完成:
这是 aspnet/EntityFrameworkCore 中的已关闭问题:CodeFirst: Set column collation
我们讨论并得出结论,为每列设置不同的排序规则并不是一个非常普遍的要求,而且我们可能不会在 EF 中做到一流。这将是使用注释来定义其他元数据然后扩展我们的 SQL 生成器来处理这些并指定排序规则的好选择。
唯一的解决方案似乎是这个:Entity Framework Code First - Change Table Column Collation
...您可以创建自定义数据库初始化程序并执行 ALTER TABLE 命令。
于 2019-02-13T12:39:51.327 回答
0
虽然可以在创建后更改数据库的排序规则(虽然它的表中有一些数据),但最好在创建任何表之前设置数据库的排序规则。因此,在创建任何表之前最初创建数据库的 EF 核心中:
- 最好确保您没有在项目的 DbContext 文件中添加任何 DbSet。
- 打开 Nuget 包管理器
- 运行此代码
PM> add-migration CreateDatabase
- 现在在迁移文件中创建了一个空的Up和Down方法,如下所示:
protected override void Up(MigrationBuilder migrationBuilder)
{
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
- 在Up方法中编写此代码。确保您的排序规则名称正确。
migrationBuilder.AlterDatabase("CollationName");
//or
migrationBuilder.Sql("EXEC('ALTER DATABASE [POMADB] COLLATE CollationName ');", suppressTransaction: true);
- 运行此代码
PM> update-database
我已经在 .NET Core 5、Visual Studio 2019、Ef core 5.0.9 中测试过这段代码
有关更多信息,请查看此链接指定数据库排序规则的能力
于 2021-09-05T10:11:46.433 回答