استثناهایی که باید حین استفاده از EF Code first بررسی شوند
نویسنده: وحید نصیری
تاریخ: ۱۳۹۱/۰۳/۳۱ ۱۹:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
try
{
context.SaveChanges();
}
catch (DbEntityValidationException validationException)
{
//...
}
catch (DbUpdateConcurrencyException concurrencyException)
{
//...
}
catch (DbUpdateException updateException)
{
//...
}
catch (DbEntityValidationException validationException)
{
foreach (var error in validationException.EntityValidationErrors)
{
var entry = error.Entry;
foreach (var err in error.ValidationErrors)
{
Debug.WriteLine(err.PropertyName + " " + err.ErrorMessage);
}
}
}
catch (DbUpdateConcurrencyException concurrencyException)
{
//بررسی مورد اول
var dbEntityEntry = concurrencyException.Entries.First();
var dbPropertyValues = dbEntityEntry.GetDatabaseValues();
}
catch (DbUpdateException updateException)
{
if (updateException.InnerException != null)
Debug.WriteLine(updateException.InnerException.Message);
foreach (var entry in updateException.Entries)
{
Debug.WriteLine(entry.Entity);
}
}
[Required(ErrorMessage = "لطفا نام نویسنده را مشخص نمائید")]
catch (DbEntityValidationException validationException)
{
var errors = validationException.EntityValidationErrors.First();
foreach (var propertyError in errors.ValidationErrors)
{
Console.WriteLine(propertyError.PropertyName + "----" + propertyError.ErrorMessage);
}
}
[MaxLength(2), Required(ErrorMessage = "طول فیلد بیش از حد مجاز است")]
public string ProductName { get; set; }
[MaxLength(2, ErrorMessage = "طول فیلد بیش از حد مجاز است")]
try
{
return base.SaveChanges();
}
catch (DbEntityValidationException validationException)
{
//...
}
//...
ICollection<DbValidationError> ValidationProperty =
context.Entry(product).Property(p => p.Name).GetValidationErrors();
if (ValidationProperty.Count() > 0)
{
DbValidationError Error=ValidationProperty.First();
errorProvider1.SetError(txtName, Error.ErrorMessage);
}
catch (System.Data.SqlClient.SqlException ex)
{
foreach (SqlError error in ex.Errors)
{
switch (error.Number)
{
case 1205:
System.Diagnostics.Debug.WriteLine("SQL Error: Deadlock condition.");
return true;
case -2:
System.Diagnostics.Debug.WriteLine("SQL Error: Timeout expired.");
return true;
case -1:
System.Diagnostics.Debug.WriteLine("SQL Error: Timeout expired.");
return true;
}
}