2012-05-06 9 views
0

私はASP.NET(初心者)で作業しており、以下のコードを使用して更新クエリを作成しようとしました。私はデータベースから日付を取得するために同じコードを試して、うまくいきますが、更新クエリではうまく動作しません。SQLサーバー2008の更新オプションを有効にする方法

注:私は私のSQL Server 2008で何かを変更する必要がありますので、私は更新オプションを使用することができhttp://msdn.microsoft.com/en-us/library/bb907191.aspx

:私は、私がこのコードを持ってLINQ

Dim updateCust = (From cust In db.Customers 
        Where cust.CustomerID = "JILLF").ToList()(0) 

updateCust.ContactName = "Jill Shrader" 

Try 
    db.SubmitChanges() 
Catch 
    ' Handle exception. 
End Try 

RefreshData() 

を使うのか?

+0

例外はありますか?あなたのキャッチでエラーを再試行してみてください。 '投げる'または '投げて投げる' –

+0

私は試してキャッチすることを試みるが、それは成功のように見える。それから私は再びそれをチェックし、私は何も私のデータベースで更新されていることを発見した。 –

+0

Sql Server Profilerのログをチェックして、ワイヤに沿って送信されるものを確認してください –

答えて

2

問題は、結果をListに変換してから最初の要素を取ることです。あなたはデータを取得しますが、データベースにバインドされていません。私はこのような何かがうまくいくと信じて:

Dim updateCust = (From cust In db.Customers 
        Where cust.CustomerID = "JILLF").FirstOrDefault() 

If updateCust IsNot Nothing Then 
    updateCust.ContactName = "Jill Shrader" 
End If 

db.SubmitChanges() 

EDIT

FirstOrDefault()がここに細かい動作しますが、あなたは同じCustomerIDを持つ複数のレコードがあった場合に例外をスローしますSingleOrDefault()を使用する場合があります(または、広く、より多くのレコードが返されます)。私は、この列が主キー列(それはそれのように見える)であり、行の一意性を保証していると仮定します。

+0

まあ、私は両方のバージョン( 'FirstOrDefault'と' ToList()(0) ')でコードを実行しています。更新しました。私の意見では、 'FirstOrDefault' /' SingleOrDefault'が好まれます。別の問題があるはずです - 接続文字列が正しいと確信していますか?あなたがプロジェクトの設定でそれを持っている場合は、値の列を編集するときには、...ボタンを押してテストすることができます。 –

関連する問題