gpt4 book ai didi

c# - 插入时防止重复

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:16 26 4
gpt4 key购买 nike

我有一些标签需要插入到标签数据库中。 Tag 数据库只有一列“tag”,它也是主键。这是在插入时防止重复的技巧。

现在是代码和问题。

foreach (string tagval in tagarray)
{
try
{
var tag = new Tag
{
Tag1 = tagval
};
db.AddToTags(tag);
}
catch
{
}
}
db.SaveChanges();

这种方法的问题是在调用 SaveChanges() 之后,如果及早发现重复项,程序就会存在而不保存其他标签。如果我在每次向表添加内容后调用 SaveChanges(),程序将变得低效并且需要进行大量调用。即使在较早的插入失败后如何继续插入?

也欢迎使用替代解决方案。

最佳答案

您需要在此处进行一些更改。首先,您最好先从自己的列表中删除重复项,然后再通过调用列表上的 .Distinct 来插入数据库。

此外,这里不需要 try catch,您应该在执行插入之前检查数据库中已有的内容。试试这个:

List<string> uniqueItems = tagarray
.Distinct()
.Where(x => !db.Tags.Contains(x))
.ToList();

foreach (string uniqueItem in uniqueItems)
{
var tag = new Tag
{
Tag1 = tagval
};
db.AddToTags(tag);
}

db.SaveChanges();

关于c# - 插入时防止重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12294922/

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