私はこの問題に完全に困惑しています。私はしばらく探していましたが、問題を解決する方法についてまだ答えがありません。
値を設定しようとするクエリを実行します。問題は、read only指定しないと変数として表示されることですSelect New With。指定するSelect New Withと、データベースは更新されません。コードの一部を以下に示します。
私の目標は、シューターがDataGridViewデータベースを更新できるようにすることです。StackOverflow に関する別の質問でDataGridView、ユーザーがデータを入力するだけではデータベースが更新されないと言われました。そこで、以下のコードを実行する更新ボタンを作成しました。
コード:
クエリを使用Select New Withすると、変数を編集できますが、データベースにコミットしません:
Dim query = From t In db.Trophies _
            Select New With {t.TrophyName, t.WinnerId, t.Name, t.Score, t.Printed}
クエリで変数を編集できません。エラー メッセージには、「Property 'TrophyName' is 'ReadOnly':
Dim query = From t In db.Trophies _
            Select t.TrophyName, t.WinnerId, t.Name, t.Score, t.Printed
結果を更新するコード:
Dim i as integer = 0
For Each result In query
    result.WinnerId = dgvTrophies.Rows(i).Cells(dgvTrophies.Columns("WinnerId").Index).Value
    result.Name = dgvTrophies.Rows(i).Cells(dgvTrophies.Columns("Name").Index).Value
    result.Score = dgvTrophies.Rows(i).Cells(dgvTrophies.Columns("Score").Index).Value
    db.SubmitChanges()
    i += 1
Next
テーブル:
PRIMARY KEY TrophyId int auto-increments
TrophyName varchar(50)
WinnerId char(7) Allow Nulls
Name varchar(20) Allow Nulls
Score int Allow Nulls
Printed bit
アドバイスや回答をいただければ幸いです。
編集:に設定しようとしましObjectTrackingEnabledたTrueが、問題は解決しませんでした。
編集:ユーザーがデータベースを更新し、更新ボタンを必要としなくなっedit modeたDataGridViewI 呼び出しを終了した後、より「自動」更新を行うようにします。db.SubmitChanges