rexi1r
چهارشنبه 06 مرداد 1395, 10: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 روی دوتا جدول تغییرات انجام میدم ولی گاها پیش میاد که تغییرات روی یکی ذخیره میشه ولی روی دومی انجام نمیشه!!!!!!!!!!!!!!!!!!!؟؟؟؟ :ناراحت::ناراحت::ناراحت:
کلا به نظرتون چطور میشه این کد رو بهینه تر کرد؟؟؟؟
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 روی دوتا جدول تغییرات انجام میدم ولی گاها پیش میاد که تغییرات روی یکی ذخیره میشه ولی روی دومی انجام نمیشه!!!!!!!!!!!!!!!!!!!؟؟؟؟ :ناراحت::ناراحت::ناراحت:
کلا به نظرتون چطور میشه این کد رو بهینه تر کرد؟؟؟؟