Ich habe einen relativ einfachen Anwendungsfall, der nicht funktioniert. Betrachten Sie den folgenden Code:
[OperationBehavior(TransactionScopeRequired = true)]
public IEnumerable<StatusRecord> ReadActive(int contactID, bool isActive)
{
var result = from n in ORM.Default.Table<StatusRecord>()
where n.lng_contact_id == contactID && n.dte_effective_end == null
select n;
return result;
}
Dies geschieht mit einem benutzerdefinierten LINQ-SQL-Anbieter unserer eigenen bösen Ursprünge. Normalerweise funktioniert diese Art von Aufruf großartig, aber wenn es von einem DTC Transacted WCF-Aufruf verwendet wird, bleibt es hängen. Meine Theorie ist, dass die Serialisierung des Ergebnisses in ein Array irgendwie außerhalb des Transaktionsbereichs erfolgt und daher hängen bleibt. Außerdem wird meine Theorie durch die Tatsache gestützt, dass das Ändern der Zeile
return result;
zu
return result.ToArray();
lässt die Dinge funktionieren. Obwohl ich froh bin, eine Lösung gefunden zu haben, scheint es einen besseren Weg zu geben, um das Verhalten zu verbessern. Bitte beraten Sie mich. Ich danke Ihnen!