当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");
希望有帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。