sql-server – 在Entity Framework Code-First Initializer中设
发布时间:2020-12-12 16:55:52 所属栏目:MsSql教程 来源:网络整理
导读:当Entity Framework Code First创建数据库时,我想设置默认的排序规则. 我尝试过以下操作: public class TestInitializerT : DropCreateDatabaseAlwaysT where T: DbContext{ protected override void Seed(T context) { context.Database.ExecuteSqlCommand(
当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()方法一样,我将在Seed()方法中建议以下内容(根据需要进行修改): context.Database.ExecuteSqlCommand( @"ALTER TABLE MyTable ALTER COLUMN MyColumn NVARCHAR(max) COLLATE MyCollation NOT NULL"); 希望有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |