外部APIから定義をロードするコードを作成しました。コードは単語のリストを繰り返し処理し、それぞれの定義を検索してから、EFを使用してこれらをSQL Serverデータベースに挿入すると考えました。行がEF/LINQで2回ロードされないようにする方法
しかし、これを2回実行すると、2回目に同じ定義が読み込まれます。既に存在する場合、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();
}
このロードをよりうまく実装する方法についてのご意見がありましたら、ありがとうございます。
はなぜとしてユニークなコラムをdefindeません – mohsen