ईएफ 4 में लेनदेन को वापस लाने के बारे में मेरे शोध में, ऐसा लगता है कि हर कोई this blog post को संदर्भित करता है या एक समान स्पष्टीकरण प्रदान करता है। मेरे परिदृश्य में, मैं इसे यूनिट परीक्षण परिदृश्य में करना चाहता हूं, जहां मैं डेटाबेस में डेटा अपडेट करने से रोकने के लिए अपने यूनिट परीक्षण संदर्भ में जो कुछ भी करता हूं, वह रोलबैक करना चाहता हूं (हाँ, हम काउंटर बढ़ाएंगे लेकिन यह ठीक है)। ऐसा करने के लिए, क्या निम्न योजना का पालन करना सबसे अच्छा है? क्या मुझे इस बारे में कुछ अवधारणा या कुछ और प्रमुख याद आ रहा है (मेरे SetupMyTest
और PerformMyTest
कार्यों के अलावा वास्तव में इस तरह से मौजूद नहीं होंगे)?यूनिट टेस्ट टीयरडाउन के लिए ईएफ 4 में रोलबैक कैसे करें?
[TestMethod]
public void Foo
{
using (var ts = new TransactionScope())
{
// Arrange
SetupMyTest(context);
// Act
PerformMyTest(context);
var numberOfChanges = context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
// if there's an issue, chances are that an exception has been thrown by now.
// Assert
Assert.IsTrue(numberOfChanges > 0, "Failed to _____");
// transaction will rollback because we do not ever call Complete on it
}
}
हम्म, ईएफ 4 में, स्पष्ट रूप से सेवचेंज (झूठा) अधिभार को हटा दिया गया है। ऐसा लगता है कि SaveChanges (SaveOptions.AcceptAllChangesAfterSave) इसके लिए प्रतिस्थापन है इसलिए मैं अपने मूल प्रश्न में यह अद्यतन कर रहा हूं। – Jaxidian