C# 如何使用LINQ'处理异常;s提交更改方法?
我正在使用LINQ将一条新记录添加到我的部门表中,我的工作如下:C# 如何使用LINQ'处理异常;s提交更改方法?,c#,asp.net,linq,exception,C#,Asp.net,Linq,Exception,我正在使用LINQ将一条新记录添加到我的部门表中,我的工作如下: try { dpt = new departement(); dpt.departementcode = tbDepartementCode.Value; dpt.departementname = tbDepartementName.Value; dpt.createby = "hendra"; dpt.createdate = DateTime.Now; dpt.updateby
try
{
dpt = new departement();
dpt.departementcode = tbDepartementCode.Value;
dpt.departementname = tbDepartementName.Value;
dpt.createby = "hendra";
dpt.createdate = DateTime.Now;
dpt.updateby = "hendra";
dpt.lastupdate = DateTime.Now;
Linq.departements.InsertOnSubmit(dpt);
Linq.SubmitChanges(); // error happen here, and could not catch it.
Response.Redirect("Departement.aspx");
}
catch (ChangeConflictException ex)
{
Console.WriteLine(ex.Message);
}
问题是,即使使用了
try
和catch
之后,当我输入数据库中已经存在的记录时,仍然会出现错误屏幕。如何修复它?有什么想法吗?举个例子就好了。如果您尝试在catch块内再次提交更改,可能会产生新的异常。您已经在的catch块中,捕获该新异常。要捕获新异常,必须在catch中定义一个新的try-catch
编辑
由于问题已更改,如果捕获未捕获在
Linq.SubmitChanges()
中引发的异常,则引发的异常可能不是ChangeConflictException
类型 如果尝试在catch块内再次提交更改,可能会产生新的异常。您已经在的catch块中,捕获该新异常。要捕获新异常,必须在catch中定义一个新的try-catch
编辑
由于问题已更改,如果捕获未捕获在
Linq.SubmitChanges()
中引发的异常,则引发的异常可能不是ChangeConflictException
类型 试试下面提到的代码,它可能会对您有所帮助
Context.SubmitChanges(Result =>
{
if (Result.HasError)
{
CallBack(Result.Error.ToString());
}
else
{
CallBack("Done");
}
}, null);
尝试下面提到的代码,它可能会帮助你
Context.SubmitChanges(Result =>
{
if (Result.HasError)
{
CallBack(Result.Error.ToString());
}
else
{
CallBack("Done");
}
}, null);
当我输入数据库中已经存在的记录时,仍然会出现一个错误屏幕
因此,如果数据存在,请首先检查数据库,如果存在,请更新旧数据,否则请添加新数据
try
{
// Check Database first with your primary key, lets assume your check returned a
// with dptcheck
var dptcheck = from d in Linq.departments
where d.YourPrimaryKey == YourValue
select d;
dpt = new departement();
if (dptcheck.Any()) dpt = dptcheck.FirstOrDefault();
dpt.departementcode = tbDepartementCode.Value;
dpt.departementname = tbDepartementName.Value;
dpt.createby = "hendra";
dpt.createdate = DateTime.Now;
dpt.updateby = "hendra";
dpt.lastupdate = DateTime.Now;
if (!dptcheck.Any()) Linq.departements.InsertOnSubmit(dpt);
// notice you only insert data if no old value found
Linq.SubmitChanges();
Response.Redirect("Departement.aspx");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
当我输入数据库中已经存在的记录时,仍然会出现一个错误屏幕
因此,如果数据存在,请首先检查数据库,如果存在,请更新旧数据,否则请添加新数据
try
{
// Check Database first with your primary key, lets assume your check returned a
// with dptcheck
var dptcheck = from d in Linq.departments
where d.YourPrimaryKey == YourValue
select d;
dpt = new departement();
if (dptcheck.Any()) dpt = dptcheck.FirstOrDefault();
dpt.departementcode = tbDepartementCode.Value;
dpt.departementname = tbDepartementName.Value;
dpt.createby = "hendra";
dpt.createdate = DateTime.Now;
dpt.updateby = "hendra";
dpt.lastupdate = DateTime.Now;
if (!dptcheck.Any()) Linq.departements.InsertOnSubmit(dpt);
// notice you only insert data if no old value found
Linq.SubmitChanges();
Response.Redirect("Departement.aspx");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
用
//进行一些调整
代码修复问题。如果在那里发生异常,它将不会递归到catch
中并处理它。您收到的完整异常是什么?您能否向我们展示(1)整个异常,包括类型和stacktrace,以及(2)整个方法(因为在上一个示例中,您有更多的catch块,现在我只看到一个)用//进行一些调整
代码修复问题。如果在那里发生异常,它将不会递归到catch
中并处理它。您收到的完整异常是什么?您能否向我们展示(1)整个异常,包括类型和stacktrace,以及(2)整个方法(因为在上一个示例中,您有更多的catch块,现在我只看到一个)。问题是,此代码之后发生错误:Linq.departments.InsertOnSubmit(dpt);Linq.SubmitChanges();然后发生了另一个例外,而不是你正在捕获的例外。我编辑了我的帖子,在错误发生的地方做了标记,有没有办法解决这个问题?顺便说一句,我尝试使用catch-general-exception,但它也不起作用。您是否放置了一个断点以确保它不会进入catch块?不,它现在起作用了,我使用general-exception来捕获它,不管怎样,thx everyone。问题是,错误发生在以下代码之后:Linq.departments.InsertOnSubmit(dpt);Linq.SubmitChanges();然后发生了另一个例外,而不是你正在捕获的例外。我编辑了我的帖子,在错误发生的地方做了标记,有没有办法解决这个问题?顺便说一句,我尝试使用catch-general-exception,但它也不起作用。您是否放置了断点以确保它没有进入catch块?不,它现在起作用了,我使用general-exception来捕获它,无论如何,thx everyone。这不可编译:方法“SubmitChanges”的重载不接受2个参数这不可编译:方法“SubmitChanges”的重载不接受2个参数