sql-server – 在Entity Framework Code-First Initializer中设置数据库排序规则

当Entity Framework Code First创建数据库时,我想设置认的排序规则.

我尝试过以下操作:

public class Testinitializer<T> : DropCreateDatabaseAlways<T> where T: DbContext
{
    protected override void Seed(T context)
    {
        context.Database.ExecutesqlCommand("ALTER DATABASE [Test] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
        context.Database.ExecutesqlCommand("ALTER DATABASE [Test] COLLATE latin1_General_CI_AS");
        context.Database.ExecutesqlCommand("ALTER DATABASE [Test] SET MULTI_USER");
    }
}

sql Server已设置为相同的认排序规则latin1_General_CI_AS时,这似乎运行正常.

但是如果我指定了不同的排序规则,那么说sql_latin1_General_CP1_CI_AS这个失败并带有错误,

System.Data.sqlClient.sqlException: Resetting the connection results in a different 
state than the initial login. The login fails.

有人建议我可以如何设置排序规则?

解决方法

之前我有同样的问题.可能的解决方案:

>似乎EF使用服务器认值创建数据库
整理,所以你可以做的一件事是改变.
>您不能在Seed()方法中更改数据库排序规则
但是您可以更改表的各列的排序规则
(注意:没有这样的表排序规则,它确实涉及到
列在表中).您将必须更改每列的排序规则
分别.
>如果您正在使用迁移,则可以更改表列
您的Up()方法中的排序规则.

正如使用Seed()方法一样,我将在Seed()方法中建议以下内容(根据需要进行修改):

context.Database.ExecutesqlCommand(
@"ALTER TABLE MyTable ALTER COLUMN MyColumn NVARCHAR(max) COLLATE MyCollation NOT NULL");

希望有帮助.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...