LINQ To SQLを扱い始めます。この基本的な問題を解決しようとします。 私は2つの列を持つ非常に単純なテーブルを持っています。LINQ TO SQLを使用して単一行を選択
- ニック - 私はいくつかのニック値を持つ行を削除したい
ユニークキー、
public void DeleteSpiritUser(string nick)
{
var user = from u in _dc.Spirit_Users where u.Nick == nick select u;
using (var scope = new TransactionScope())
{
_dc.Spirit_Users.DeleteOnSubmit(user.First());
try
{
_dc.SubmitChanges();
}
catch (Exception exception)
{
throw exception;
}
scope.Complete();
}
}
問題は、私は1つの行をしたい場合、私はLINQで1行のみを選択したいと思いニックは一意であるため、IEnumerableを知っているuser.First()を使用しなければならないということです。
私はこの方法を使用します。
スコープがusingブロックで既に宣言されていて、完全なメソッドが呼び出されないとトランザクションが中止されるため、try-catchを入れたのはなぜですか? –
@Davide Piras:オリジナルの質問には既にそれがありました - 私はそれをコピーしました。しかし、私は同意します - これはちょっとだけです - 例外をキャッチして**処理するか、例外を処理するか、それを起こさせてバブルアップしてください。 –
@Davide Piras:私の答えを修正しました。もし例外が発生した場合、呼び出し側はそれに対処する必要があります –