• Another observation is when I set "connection timeout" to 60 seconds, then client can be redirected to new principal db in few times failure. 

    connection string="data source=xxx.xxx.23.5;failover partner=xxx.xxx.25.56;Network=dbmssocn;user id=username;password=password;connection timeout=60;Initial Catalog=dbname;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />