以下のコードを確認してください。私は間違ったエンティティクエリを持っていると思います。条件とマークされたエンティティクエリの2番目の内部をチェックします。このCategoryIDが利用できない場合、私の目標はデータを保存することです。しかし、私はそれをデバッグで実行すると、私は単純にif条件がスキップされるのを見ることができますが、私のデータベースにはデータがないので、空でなければならず、コードの中で実行する必要があります。私は以下のようなエンティティクエリーに間違ったことをしていると思います。何か案が?データが存在しない場合は条件を実行してください
ctx.Level1Cats.Any(X => x.Level1CatId!= item.CategoryID.ToString())
foreach (CategoryType item in categories)
{
if (item.CategoryLevel == 1)
{
if (ctx.Level1Cats.Any(x => x.Level1CatId != item.CategoryID.ToString()))
{
CatLevel1.Level1CatId = item.CategoryID;
CatLevel1.Name = item.CategoryName;
ctx.Level1Cats.Add(CatLevel1);
//ctx.SaveChanges();
}
else if (ctx.Level1Cats.Any(x => x.Level1CatId == item.CategoryID.ToString()))
{
CatLevel1.Level1CatId = item.CategoryID;
CatLevel1.Name = item.CategoryName;
ctx.Entry(CatLevel1).State = EntityState.Modified;
ctx.SaveChanges();
}
}
}
なぜitem.CategoryIDがToString()ですか? IDは数字ではありませんか? –
はい私のデータベースも同じIDはその文字列ではありません@LiakatHossain –
'ctx.Level1Cats'には複数の項目が含まれていると仮定すると、' if'を*常に* trueにすると思います。 ctx.Level1Catsに1つのエントリとitem.CategoryID *が1つのエントリのIDである場合は、おそらくfalseになる可能性があります。 – Fildor