gpt4 book ai didi

c# - InsertOnSubmit 约束

转载 作者:搜寻专家 更新时间:2023-10-30 21:36:15 25 4
gpt4 key购买 nike

在使用 SubmitChanges() 之前使用 InsertOnSubmit() 函数插入行时,有没有一种方法可以检查数据库的约束?

原因,我正在循环从 csv 文件生成的数据表。我一次插入 1 行以显示进度。现在,当发生冲突时,linq 回滚所有更改,而我希望成功的插入保持插入状态。

现在,当运行这段代码时,它会在第一次冲突时出错,然后就停止了。它不再插入任何行,并且在我下次运行此代码时覆盖冲突之前的行。

我希望有人能帮我解决这个问题。您可以在下面找到我的代码片段。

问候,泰斯

foreach (DataRow row in Data.Rows)
{
ProfilePrefillData profile = new ProfilePrefillData();

//Paramaters
profile.ProfileId = new Guid(row["profileid"].ToString());
...

//Insert & submit
db.ProfilePrefillDatas.InsertOnSubmit(profile);

try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (Exception ex){}
}

最佳答案

试试这个怎么样:

List<ProfilePrefillData> badProfiles = new List<ProfilePrefillData>();
foreach (DataRow row in Data.Rows)
{
..

try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch (Exception ex)
{
// record which are the bad profiles
badProfiles.Add(profile);

// Remove the bad profile from items to be added
db.ProfilePrefillDatas.Remove(profile);
}
}

// Return some information to the user about the bad profiles so that
// they can be identified, corrected and reimported.
LogBadProfileData(badProfiles);

因此,当配置文件导致错误时,您将其从 DataContext 的集合中删除(这样它就不会在下一次迭代时尝试重新插入它们)并将它们存储在 badProfiles 集合中。然后,您可以继续遍历剩余的配置文件,在它们完成导入后,记录或报告错误的配置文件,以便您可以更正它们并尝试重新导入。

关于c# - InsertOnSubmit 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com