0

请参阅示例 1。如果某些数据输入错误,EF4 将无法生存,也不会有任何记录。

问题是:是否作为一种力量忽略一条记录中的错误并继续。

示例1:

foreach (var tag in split)
{
    context.NameToResourcer.AddObject(new NameToResourcer()
    {
        id_resource = resource.id,
        name = tag
    });
}
context.NameToResourcer.AddObject(new NameToResourcer()
{
    id_resource = resource.id,
    name = ExtractDomainNameFromURL(resource.url)
});
try
{
    context.SaveChanges();
}
catch (UpdateException ex)
{

}
catch (Exception ex)
{

    throw;
}

示例 2 替代方案:

foreach (var tag in split)
{
    try
    {
        context.NameToResourcer.AddObject(new NameToResourcer()
        {
            id_resource = resource.id,
            name = tag
        });
        context.SaveChanges();
    }
    catch (UpdateException ex)
    {

    }
} 
try
{
    context.NameToResourcer.AddObject(new NameToResourcer()
    {
        id_resource = resource.id,
        name = ExtractDomainNameFromURL(resource.url)
    });
    context.SaveChanges();
}
catch (UpdateException ex)
{

}
4

2 回答 2

3

上下文的行为类似于工作单元。这意味着当您修改数据并通过一次调用来存储它们时,SaveChanges您是在告诉 EF 您想要原子操作 - 要么成功保存所有更改,要么回滚所有更改。EF 在内部使用事务来支持此行为。如果您不希望这种行为,则无法通过一次调用来保存所有数据SaveChanges。您必须对每个原子数据集使用单独的调用。

于 2011-07-12T21:44:44.663 回答
0

一种可能的解决方案是禁用保存验证。但我不推荐它。

db.Configuration.ValidateOnSaveEnabled = false;
于 2015-11-20T09:07:37.377 回答