私の人生のために、実際にレコードセットを更新するLINQを得ることができません。現時点では、データベースに新しい行を追加することに成功しています。LINQを介してデータベースを更新
以下のコードを説明するには、 私は列の魔法使いを通ってループしています。 filterFrom
は、foreach
ループを開始する日付であり、filterTo
ループの終了日です。すべてはDateRange
メソッドによって行われます。そのためのコードが必要な場合は、そう言いますが、foreach
ループそのものがうまくいきます。
は、その後私は何をしようとしていることは、レコードセットの日付は、LINQ、p.Date_Data == day
経由 が存在すると列p.Time_Data_2
とp.Time_Data_1
がNULL値でない場合、その列Info_Data
を更新するかどうかを確認するテストです。しかし、何が起きているのかは、クエリのデータだけで新しい行を追加して、既存のデータを更新しないことです。
foreach (DateTime day in DateRange(filterFrom, filterTo))
{
if (sql.Staff_Time_TBLs.Any(p => p.Date_Data == day && p.Staff_No == SelectedEmployee && p.Time_Data_1 != null && p.Time_Data_2 != null && p.Info_Data == null))
{
Staff_Time_TBL updateRow = new Staff_Time_TBL
{
Info_Data = "myValue",
};
sql.Staff_Time_TBLs.InsertOnSubmit(updateRow);
}
sql.SubmitChanges();
}
これを修正してデータを更新し、データベースに新しいデータ行を作成しないようにするにはどうすればよいですか?
あなたが 'InsertOnSubmit'メソッドを呼び出す' if'ステートメントでは、 'update'メソッドを呼び出さなければならないと思います。これは私があなたの '質問'から理解したものです。私が間違っていると私を訂正します。 – Chaitanya
@Chaitanya、 'if'ステートメントは問題の列がヌル値ではないことをテストするためのものです。次の行のデータ。私はそれがここの問題だとは思わない。何が起こるかは、 'if'ステートメント内のクエリは、既存のデータを更新するだけでなく、新しい行にデータを追加することです。それとも、それは私がこれを理解していないところですか? – KyloRen
新しいオブジェクトを新しく作成して保存するときに、なぜあなたは 'UPDATE'を期待していますか? – Maarten