Set database collation in Entity Framework Code-First Initializer

后端 未结 8 1297
后悔当初
后悔当初 2020-12-01 12:26

I want to set the default collation for a database, when Entity Framework Code First creates it.

I\'ve tried the following:

public class TestInitiali         


        
8条回答
  •  离开以前
    2020-12-01 13:12

    1):
        public class DataBaseContext : System.Data.Entity.DbContext
        {
            public DataBaseContext() : base("MyDB") { }
            static DataBaseContext()
            {
                System.Data.Entity.Database.SetInitializer(new MyInitializer());
            }
         ....
        }
    
    2):
        public class MyInitializer : DropCreateDatabaseIfModelChanges
        {
            public MyInitializer() { }
    
            protected override void Seed(DataBaseContext context)
            {
                base.Seed(context);
                using (var conn = new SqlConnection(context.Database.Connection.ConnectionString))
                {
                    using (var cmd = conn.CreateCommand())
                    {
                        cmd.CommandText =
                            string.Format("ALTER DATABASE [{0}] COLLATE Persian_100_CI_AS",
                                context.Database.Connection.Database);
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                    }
                    context.Database.Connection.Close();
                }            
            }
        }
    

提交回复
热议问题