可以在Entity Framework的CreateOrUpdate方法中依赖try-catch吗?

Joh*_*ski 2 c# entity-framework exception-handling exception try-catch

这样做是否可以接受?首先尝试添加实体.如果添加失败,则无关紧要,因为这意味着实体已存在?

或者是否有更优雅/简单的解决方案?

EntityFrameworkEntities dal = EntityDataModelHelper.GetEntityDataModel();

try
{
    dal.AddToXXXXXX(xxxxxxx);
}
catch
{

}

try
{
    dal.SaveChanges();
    return true;
}
catch
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

好吧,我把它缩短为......

EntityFrameworkEntities dal = EntityDataModelHelper.GetEntityDataModel();

if(xxxxxxx.ID == 0)
{
    dal.AddToXXXXXX(xxxxxxx);
}

try
{
    dal.SaveChanges();
    return true;
}
catch
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 7

这样做肯定不行.C#中没有类型的catch语句意味着"捕获任何标准或非标准异常".但你的意图是防止重复添加.添加可能由于各种原因而失败,这些原因并不表示现有条目.例如,该方法可以抛出空引用,并假设它已添加.

如果要检查重复添加,则必须仅捕获为重复添加引发的异常.