Aufwand (C #) - "Sequenz enthält kein übereinstimmendes Element", wenn Daten an eine meiner Entitäten gesendet werden

c# effort entity-framework unit-testing

Frage

Ich versuche in meinem Projekt einige Komponententests für einige Webdienstaufrufe zu erstellen. Ich benutze Entity Framework 6.1.3 in meinem Projekt, um die Daten auf der Service-Ebene (mit einem Code-First-Ansatz) abzurufen. Ich habe nachgeforscht, wie man ein DatabaseContext-Objekt verspottet und ich habe herausgefunden, dass Effort das kann.

Ich habe die Dokumentation bei der Implementierung von Effort in meinen Komponententests befolgt, aber wenn ich versuche, Daten in meine Entitäten zu importieren, erhalte ich die Ausnahme "System.InvalidOperationException: 'Sequenz enthält kein passendes Element'". Ich bin mir nicht ganz sicher, warum das passiert. Jede Hilfe wird sehr geschätzt. Vielen Dank!

So sieht der Code aus ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Hier sende ich Daten an die Entitäten ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Hier ist mein Entity Model ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Hier ist mein DatabaseContext ...

  //THE CALLER -- Doing what Effort suggests to do.

    var dbConnection = DbConnectionFactory.CreateTransient();
        FakeDbContext = new FakeDbContext(dbConnection);
        DatabaseSeed.AddTestData(FakeDbContext);

Ich habe auch eine andere Klasse FakeDbContext.Base, die OnModelCreating überschreibt.

Hier ist der Stack Trace:

StackTrace

Akzeptierte Antwort

Die Stapelüberwachung zeigt, dass die Ausnahme ausgelöst wird, wenn der Datenanbieter nach einem "Geschäftstyp von Name" sucht. Dies bedeutet, dass Sie einen Datentyp verwenden, den Effort nicht unterstützt. Dies wird durch ein Problem im Projekt Effort bestätigt.


Beliebte Antwort

hoffe das hilft.

Viele Antworten sagen, dass Sie FirstorDefault() in Ihren EF-Anweisungen hinzufügen FirstorDefault() aber dieser Fehler tritt auch in den falschen Eigenschaften auf, die Datenanmerkungen verwenden.

Achten Sie bei der Verwendung von Datenannotationen auf die hinzugefügten Eigenschaften.

Beispiel unten, verpasste ich die TypeName = "string" , die nvarchar hätte sein nvarchar da es der Datentyp in der Datenbank ist.

Beachten Sie auch die Order = n , (beginnt mit 0)

Bei der Aktualisierung eines früheren Kollegen-Quellcodes wurde dies festgestellt.

[Display(Name = "Name")]
[MaxLength(4000)]
[Column("Name", Order = 14, TypeName = "string")]
public string Name { get; set; }

dann habe ich meinen Code mit korrigiert

[Display(Name = "Name")]
[MaxLength(4000)]
[Column("Name", Order = 14, TypeName = "string")]
public string Name { get; set; }

:)




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum