単純に、タイプリスト(i.e. Items)
のコレクションを反復処理することによって、学生をデータベースに追加しています。項目は強くここに入力されません。私はこれをどこかから手に入れています。だから、私はそれをSQLに書き込む前にそれからStudentオブジェクトを構築する必要があります。それは学生情報を持っています。イテレータ内にエンティティを保存するときにエラーが発生する
すべてのフィールドの検証が正常であれば、問題なく動作します。
ただし、リストの最初の項目に検証エラー(i.e. Age required field in Student model)
があると、エラーが発生します。しかし、2番目の項目の有効な年齢の値を持っていますが、それでも前の項目の検証エラーが表示されます。
try
{
foreach (var item in Items)
{
Student student = new Student
{
StudentId = item.Id,
Age = item.Age,
Description = item.Description
};
_context.Student.Add(student);
_context.SaveChanges();
}
}
catch (MyCustomValidationException ex)
{
//// catch it and log it
}
コンテキストに関連付けられている最初のアイテムに関連するものはありますか。 どうすればそれを取り除くことができますか?すべて私はDBにアイテムを保存したいのですが、リストを反復して検証をパスします。
アイテム
public class Items
{
public string Id {get;set;}
public string Age {get; set;}
public string Description {get;set;}
}
これは、それはあなたがあなたのループ内で変更内容を保存してはならないすべての
items.Add(
new Items
{
new Items {Id = 1, Age = null, Description = "ABC"},
new Items {Id = 1, Age = 12, Description = "ABC"}
}
)
「アイテム」には何がありますか?エラーは何ですか? – dotctor
私が言ったようなアイテムは 'コレクションのタイプリスト'です。それは学生情報を持っています。エラー。年齢は私のモデルの必須フィールドです。最初の反復でAgeがnullの場合、検証エラーが発生します。これは問題ありません。しかし、2回目の反復では、私はAgeを持っていますが、EFはAgeの要求を続けています。 – simbada
_contextクラスのコードも投稿できますか?あなたは通常、.Studentの代わりに_context.Studentsを使用します。これはセットであることを示します(レコードを意味します) – peval27