gpt4 book ai didi

c# - 如何确保行不会使用 EF/LINQ 加载两次

转载 作者:行者123 更新时间:2023-11-30 23:24:57 25 4
gpt4 key购买 nike

我创建了代码来从外部 API 加载定义。代码遍历单词列表,查找每个单词的定义,然后我想使用 EF 将它们插入到我的 SQL Server 数据库中。

但是,如果我运行两次,它会在第二次加载相同的定义。有没有办法让 EF 不添加已存在的行?

public IHttpActionResult LoadDefinitions()
{
var words = db.Words
.AsNoTracking()
.ToList();

foreach (var word in words)
{
HttpResponse<string> response = Unirest.get("https://wordsapiv1.p.mashape.com/words/" + word)
.header("X-Mashape-Key", "xxxx")
.header("Accept", "application/json")
.asJson<string>();

RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(response.Body);
var results = rootObject.results;

foreach (var result in results)
{
var definition = new WordDefinition()
{
WordId = word.WordId,
Definition = result.definition
};
db.WordDefinitions.Add(definition);
}
db.SaveChanges();
}

return Ok();
}

如果有人对我如何更好地实现此加载有任何建议,我将不胜感激。

最佳答案

foreach (var result in results)
{
if(!(from d in db.WordDefinitions where d.Definition == result.definition select d).Any())
{
var definition = new WordDefinition()
{
WordId = word.WordId,
Definition = result.definition
};
db.WordDefinitions.Add(definition);
}
}

关于c# - 如何确保行不会使用 EF/LINQ 加载两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37520689/

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