Да, я только что столкнулся с той же проблемой - наше приложение использует SQL Server, но модульные тесты выполняются с использованием SQL Server CE.Я прочитал статью, предоставленную Kev, и предложил усовершенствование автоматизации, предотвращающее ручное копирование файла.
Предполагая, что для параметра «Обработка артефактов метаданных» установлено значение «Встроить в выходную сборку», вы можетеследующее:
public void SetupOnce()
{
var assembly = typeof(TContext).Assembly;
var ssdlRes = assembly.GetManifestResourceNames().Single(e => e.EndsWith("ssdl")); //TODO handle multiple contexts
using (var stream = assembly.GetManifestResourceStream(ssdlRes))
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd().Replace("Provider=\"System.Data.SqlClient\"", "Provider=\"System.Data.SqlServerCe.4.0\"");
File.WriteAllText(ssdlRes, result);
}
Context = new TContext();
}
И тогда строка подключения устанавливается на:
<add name="DomainDbContext"
connectionString="metadata=res://*/Entities.Entities.csdl|./Entities.Entities.ssdl|res://*/Entities.Entities.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=StraDaLB_DM.sdf""
providerName="System.Data.EntityClient" />
Надеюсь, это когда-нибудь кому-нибудь поможет;)