PDA

View Full Version : حرفه ای: انجام نگرفتن قسمتی از دستور transaction



rexi1r
چهارشنبه 06 مرداد 1395, 09:52 صبح
دوستان این transaction برای من درست انجام نمیشه تازه جدیدا فهمیدم بعضی جاها بعضی از دستورات داخل transaction رو انجام میده و بعضی ها رو انجام نمیده. کد زیر رو ببینید:

public HttpResponseMessage PostCurrepted(User user, [FromUri] string phonenumber, [FromUri] string reason)
{

if (!reason.Contains("NOT_FOUND"))
{
int coin = 0;
string persiandate = OurPersianDate.shamsi(DateTime.Now) + " " + OurPersianDate.shamsi_time(DateTime.Now);
using (TransactionScope scope = new TransactionScope())
{

User databaseUser;
try
{
try
{

databaseUser = db.Users.Where(a => a.Id == User.Id && a.tgUserId == User.tgUserId).FirstOrDefault();
databaseUser.reasonState = 1;
if (String.IsNullOrEmpty(reason))
databaseUser.reason = "معیوب";
else
{
if (reason.Contains("USERNAME_NOT_OCCUPIED"))
databaseUser.reason = "کاربر معیوب است.";
else if (reason.Contains("NOT_FOUND"))
databaseUser.reason = "کاربر یافت نشد.";
}

db.Entry(databaseUser).State = EntityState.Modified;
db.SaveChanges();
}
catch (Exception d)
{
var jsonerror =
new
{
result = "server User",
message = d.Message,
error = "خطایی رخ داده است.",
method = "PostCurrepted",
data = ""
};
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, jsonerror);
return res;
}


RequestMember reqmem;

try
{

try
{
reqmem = db.RequestMembers.Where(a => a.Userincreamentalid == databaseUser.Id && a.phonenumber == databaseUser.phonenumber && a.tgUserid == databaseUser.tgUserId).FirstOrDefault();

}
catch (Exception d)
{
var jsonerror =
new
{
result = "server RequestMember before",
message = d.Message,
error = "خطایی رخ داده است.",
method = "PostCurrepted",
data = ""
};
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, jsonerror);
return res;
}
try
{
reqmem.reasonState = 1;
if (String.IsNullOrEmpty(reason))
reqmem.reason = "معیوب";
else
{
if (reason.Contains("USERNAME_NOT_OCCUPIED"))
reqmem.reason = "کاربر معیوب است.";
else if (reason.Contains("NOT_FOUND"))
reqmem.reason = "کاربر یافت نشد.";
}

db.Entry(reqmem).State = EntityState.Modified;
db.SaveChanges();

}
catch (Exception d)
{
var jsonerror =
new
{
result = "server RequestMember after",
message = d.Message,
error = "خطایی رخ داده است.",
method = "PostCurrepted",
data = ""
};
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, jsonerror);
return res;
}


}
catch (Exception d)
{
var jsonerror =
new
{
result = "server",
message = d.Message,
error = "خطایی رخ داده است.",
method = "PostCurrepted",
data = ""
};
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, jsonerror);
return res;
}




}
catch (Exception e)
{
var jsonerror =
new
{
result = "server",
message = e.Message,
error = "خطایی رخ داده است.",
method = "PostCurrepted",
data = ""
};
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, jsonerror);
return res;
}

scope.Complete();


}

var json =
new
{
result = "OK",
message = "",
error = "",
method = "PostCurrepted",
data = coin
};
HttpResponseMessage result = Request.CreateResponse(HttpStatusCode.OK, json);
return result;
}
else
{
var jsonerror =
new
{
result = "server",
message = "",
error = "خطایی رخ داده است.",
method = "PostCurrepted",
data = ""
};
HttpResponseMessage res = Request.CreateResponse(HttpStatusCode.OK, jsonerror);
return res;
}
}




اگه دقت کنید من داخل transaction روی دوتا جدول تغییرات انجام میدم ولی گاها پیش میاد که تغییرات روی یکی ذخیره میشه ولی روی دومی انجام نمیشه!!!!!!!!!!!!!!!!!!!؟؟؟؟ :ناراحت::ناراحت::ناراحت:

کلا به نظرتون چطور میشه این کد رو بهینه تر کرد؟؟؟؟

rexi1r
شنبه 09 مرداد 1395, 15:52 عصر
هیچکدام از دوستان نیست این را دریابد؟