Ho problemi con l'uso di Effort framework (versione 1.1.4) su unit test my DB-layer.Test dell'unità di sforzo Entity framework 6.1.3 DB-first
Ho un DB-layer che utilizza Entity framework 6.1.3 e il modello è stato creato utilizzando l'approccio database-first quindi esiste un file *.edmx
che descrive il modello.
Ho creato una classe parziale per esporre un costruttore aggiuntivo utilizzato dai test unitari con sforzo simili:
public partial class Entities
{
public Entities(DbConnection connection)
: base(connection, true)
{
}
}
La semplice unità di test simile a questo:
private Entities CreateContext()
{
//var connectionString = ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
//var connection = Effort.EntityConnectionFactory.CreateTransient(connectionString);
//return new Entities(connection as DbConnection);
var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");
var context = new Entities(connection);
return context;
}
[TestMethod]
public void Testing_Effort_Integration()
{
using (var context = CreateContext())
{
var entity = context.TableEntity.FirstOrDefault(i=> i.Id);
Assert.IsNotNull(entity);
}
}
Quando eseguire il test di unità viene generata un'eccezione per la linea:
var connection = Effort.EntityConnectionFactory.CreatePersistent("name=Entities");
{"Il provider non ha restituito un'istanza ProviderManifest."} Messaggio InnerException: {"Impossibile determinare la versione di archiviazione; è richiesta una Connessione storage valido o un accenno di versione. "}
Altri messaggi che ho trovato suggerisce di modificare l'attributo ProviderManifestToken
nel file *.edmx
da '2012' a '2008'. Questo sembra risolvere il problema ma invece dà la mia un'altra eccezione quando si tenta di utilizzare il contesto per la prima volta qui:
var entity = context.TableEntity.FirstOrDefault(i=> i.Id);
NotSupportedException Impossibile determinare il nome del provider per fornitore fabbrica di tipo 'System.Data.EntityCli ent.EntityProviderFactory'. Assicurarsi che il provider ADO.NET sia installato o registrato nella configurazione dell'applicazione.
Qualcuno sa come risolvere questo problema in modo da poter utilizzare Effort con il framework di entità 6.1.3 approccio DB-first?
Sono riuscito a utilizzare Effort (versione 1.1.4) a DB-layer di test unità creati in EF 4 e EF 5 con approccio DB-first - questo è il motivo per cui penso che la versione EF possa essere di interesse ...