আমি একটি ইন্টিগ্রেশন টেস্ট লিখছি যেখানে আমি একটি ডাটাবেসে বেশ কয়েকটি অবজেক্ট সন্নিবেশ করিয়ে যাচ্ছি এবং তারপরে আমার পদ্ধতিটি সেই জিনিসগুলি পুনরুদ্ধার করে কিনা তা পরীক্ষা করে দেখছি।
ডাটাবেসের সাথে আমার সংযোগটি এনএইচবারনেটের মাধ্যমে ... এবং এই জাতীয় পরীক্ষা করার জন্য আমার নিয়মিত পদ্ধতিটি নিম্নলিখিত কাজগুলি করতে হবে:
NHibernateSession.BeginTransaction();
//use nhibernate to insert objects into database
//retrieve objects via my method
//verify actual objects returned are the same as those inserted
NHibernateSession.RollbackTransaction();
যাইহোক, আমি সম্প্রতি লেনদেনস্কোপ সম্পর্কে সন্ধান করেছি যা সম্ভবত এই উদ্দেশ্যেই ব্যবহার করা যেতে পারে ...
কিছু উদাহরণ কোড আমি খুঁজে পেয়েছি :
public static int AddDepartmentWithEmployees(Department dept)
{
int res = 0;
DepartmentAdapter deptAdapter = new DepartmentAdapter();
EmployeeAdapter empAdapter = new EmployeeAdapter();
using (TransactionScope txScope = new TransactionScope())
{
res += deptAdapter.Insert(dept.DepartmentName);
//Custom method made to return Department ID
//after inserting the department "Identity Column"
dept.DepartmentID = deptAdapter.GetInsertReturnValue();
foreach(Employee emp in dept.Employees)
{
emp.EmployeeDeptID = dept.DepartmentID;
res += empAdapter.Insert(emp.EmployeeName, emp.EmployeeDeptID);
}
txScope.Complete();
}
return res;
}
আমি বিশ্বাস করি যে যদি আমি লাইনটি অন্তর্ভুক্ত না txScope.Complete()
করি তবে sertedোকানো ডেটাটি আবার ঘোরানো হবে। তবে দুর্ভাগ্যক্রমে আমি বুঝতে পারছি না যে এটি কীভাবে সম্ভব ... কীভাবে txScope
বস্তুটি ডাটাবেসের উপর deptAdapter
এবং empAdapter
বস্তু এবং তাদের লেনদেনের একটি ট্র্যাক রাখে।
আমার মনে হচ্ছে আমি এখানে কিছুটা তথ্য মিস করছি ... আমি কি আমার কোড ব্যবহার করে আমার BeginTransaction()
এবং RollbackTransaction(
) কলগুলি প্রতিস্থাপন করতে সক্ষম TransactionScope
?
যদি তা না হয় তবে কীভাবে TransactionScope
লেনদেনের পিছনে কাজ করা যায়?