For Unit Tests I change Schema this way (changing ssdl before main code execution).
In code:
var s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Model1.ssdl");
var ssdlFilePath = "<some-dir>\file1.ssdl";
using (var file = File.Create(ssdlFilePath))
{
StreamUtil.Copy(s, file);
}
var str = File.ReadAllText(ssdlFilePath);
str = str.Replace("old provider token", "ProviderManifestToken=\"4.0\"");
str = str.Replace("old provider type"", "Provider=\"System.Data.SqlServerCe.4.0\"");
File.WriteAllText(ssdlFilePath, str);
In app.config:
<connectionStrings>
<add name="Database2Entities" connectionString="metadata=res://*/Model1.csdl|<some-dir>\file1.ssdl|res://*/Model1.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=|DataDirectory|\Database1.sdf"" providerName="System.Data.EntityClient" />
</connectionStrings>
It works)