私はこれを何回もやってきました。Linq-to-SQLを使用してレコードを更新する
私が見つけたすべての例は、私が持っているまさに..です
私は私のクエリを実行...
var result = from u in tdc.tblUsers
where u.UserID == userID
select u;
そして私はに私が欲しいの値を変更します。
foreach (tblUsers u in result)
{
//change values (and no im not changing the primary key or foreign keys)
}
変更を提出します。
tdc.SubmitChanges();
は、私はまた、この方法の前にそれを試してみましたが、UserID
が主キーであるため、それだけで今までにこのクエリで1つのレコードを取得すると同じエラー
tblUsers result = (from u in tdc.tblUsers
where u.UserID == userID
select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();
を持っています。
変更が送信されると、その行が見つからなかったか、変更されたという例外がスローされます。私はこれを使用している唯一の人ですので、dbまたはロックにアクセスすることに他の競合はありません。なぜそれはChangeConflictException
を投げますか?私はデバッガを使って歩み始めました。データは、私がしようとしている変更を含めて、プロセス全体を通して持続しています。
Entity Frameworkを使用していますか(もしあれば、どのバージョンですか)? – gunr2171
また、すべてのテーブルに主キーがありますか。これには、編集中のものと、外部キーからの分岐テーブルが含まれます。 – gunr2171
.NET Framework 4とはい、すべてのテーブルにプライマリキーと適切な外部キーがあります。このクエリは1つのテーブルの後に行くだけで、そのテーブルには外部キーがありません。それは私のベーステーブルの一つです。 –