Я использую Entity Framework и Telerik RadGrid.У меня есть таблица с ограничением, которое выдает исключение, если в качестве вставки используется продукт с повторяющимся именем.Я пытаюсь перехватить исключение на своем бизнес-уровне, и оно, похоже, нормально проходит через блок перехвата, но я получаю ошибку от Telerik RadScriptManager
"Ошибка времени выполнения Microsoft JScript: Sys.WebForms.PageRequestManagerServerErrorException: исключение имеетбыл брошен целью вызова ".
вместо всплывающего окна Jquery, которое я ожидаю с сообщением "Duplicate Product" Кто-нибудь знает, что я делаю неправильно?нужно ли исключение вести себя в моем DAL?но я не думаю, что я должен бросить BusinessRuleExceptions откуда-то, кроме BLL.Я разместил функцию Вставка в своем классе BL ниже, если у кого-то есть идея, что может быть причиной ошибки Jscript, пожалуйста, дайте мне знать, спасибо !!
Редактировать объектный источник данных TypeName привязан к бизнесуСлой ProductBL Product BL Функция Insert_Product вызывается из моего ObjectDataSource как функция Вставка.В коде Product.cs класса у меня есть функция для Вставки продуктов, в которую я передаю Имя продукта (см. Ниже), у этой функции есть блок try catch ... Должен ли я генерировать исключение здесь?Я подумал, что было бы правильно выбросить исключение BusinessRulException в бизнес-уровне.
Класс Product.CS (команда вставки источника данных объекта)
protected void ODSProducts_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
{
try
{
TextBox txtProductName = (TextBox)ProductsGrid.MasterTableView.GetInsertItem().FindControl("txtProductName");
((ACME.DAL.Product)e.InputParameters[0]).Product.product_name = txtProductName.Text;
}
catch (Exception ex)
{
HTMLError.HtmlError.LogHtmlError(ex, Application["ErrorLog"].ToString());
throw;
}
}
ProductsBL.CS
public void Insert_Product(Product product)
{
try
{
repository.Insert_Product(product);
}
catch (Exception ex)
{
if (ex.GetType().Name == "UpdateException")
{
throw new BusinessRuleException("Duplicate Product");
}
}
}
Product.DAL
public void InsertProduct(Product product)
{
context.Products.AddObject(product);
context.SaveChanges();
}