Ich versuche gerade, eine Kontextklasse des Entity Framework mit dem Framework "Effort" zu testen ( http://effort.codeplex.com/wikipage?title=Tutorials&referringTitle=Home )
Wenn mein Unit-Testprojekt zwei Klassen enthält, die Methoden verwenden, die Aufwand erfordern, bekomme ich den folgenden Fehler:
Argument 'xmlReader' ist nicht gültig. Es muss mindestens ein .ssdl-Artefakt bereitgestellt werden.
Es scheint so zu sein, dass der Fehler verursacht wird, wenn mehr als eine Klasse mit der Methode "one than" arbeitet. Ich habe nicht alle meine Unit-Test-Funktionen in einer Klasse.
Code, an dem der Test ausgeführt wird:
IDataLoader loader = new Effort.DataLoaders.CsvDataLoader(Path.Combine(TestContext.DeploymentDirectory, "csvFiles"));
using (EntityConnection connection = Effort.EntityConnectionFactory.CreateTransient("name=Entities", loader))
{
BussinnesLayer.Customer[] customers = Customer.GetCustomers(connection);
Assert.IsTrue(customers.Length > 0, "Customer list length = 0");
}
App.Config enthält Folgendes für die Entitätsverbindungszeichenfolge: (entfernte vertrauliche Daten)
<add name="Entities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string="data source=servername;initial catalog=database;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Jede Hilfe wäre willkommen.
Ich lief in den gleichen "xmlReader" ist kein gültiger Fehler.
Das Problem bestand darin, das ssdl-Artefakt zu lokalisieren. Es funktionierte in Tests, die später auf meine Entity Framework-Objekte verwiesen, aber das Erstellen einer Verbindung allein fehlschlug.
Das hat mir geholfen.
Versuchen Sie, Ihre App.Config-Zeile zu ändern, um den Assemblynamen statt des * einzubeziehen. Wenn Ihre Assembly also Project1.EF heißt, würde Ihre App.Config-Zeile ungefähr so aussehen:
<add name="Entities" connectionString="metadata=res://Project1.EF/Model.csdl|res://Project1.EF/Model.ssdl|res://Project1.EF/Model.msl;provider=System.Data.SqlClient;provider connection string="data source=servername;initial catalog=database;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />