asp.net c#Webアプリケーションのlinq to sqlを使用してDataContextに問題があります。外部キーフィールドを更新する前にDataContextが破棄されました
私はDataContextを処分しなかったので例外がスローされていましたが、これはthis questionと同じエラーです。私は静的なDataContextを使用していました。なぜなら、おそらくそれが適切に処理されなかったからです。そして、thisと他のいくつかの記事を読んだ後、彼らは処分されることを確実にするためにステートメントを使用しています。
しかし、DataContextがすでに破棄されているため、外部キーを更新する必要があるときに問題が発生しました。私はなぜそれがすでに処分されているのかわからないし、このシナリオではベストプラクティスが何をするのだろうかなんて、どんなアイデアも大いに評価されるだろう!
ここショート例:
UPDATE:私は私がここに長いのです可能な限り短くすることを試みたときに私の例では、あまりにも混乱だったと思うし、うまくいけば、より良い例:
private static void SendTexts(List<TextAlert> TextQueue)
{
using (THTDataContext db = new THTDataContext())
{
foreach (TextAlert text in TextQueue)
{
try
{
// do IntelliSMS stuff
// set status to 'sent'
text.Status = 1;
db.SubmitChanges();
}
catch (IntelliSMSException ex)
{
// set status to 'failed'
text.Status = 2;
db.SubmitChanges();
}
}
}
}
感謝、
Annelie
私はいつも2番の数字が本当に意味するものは何か、と思っています! ;)真剣にしかし、魔法の数字は、その日を見ている、 "enum"は(他の何も読みやすさの面で)より効果的だろう。そして、 'Status'が' enum'型/ valuesの場合、そういう値を割り当てるのではなく、適切な型を使うことをお勧めします。オフトピック、私は知っているが、私はそれがまともな情報だと思う。 –
@Mr。失望 - 早い選択肢をとるのではなく、まず始めにそれをやっていたはずなのに、今の年齢のリストに載っています。 :) – annelie
あなたのコードスニペットから実際に何をしているのかを推測するのは非常に難しいです:Linq2SQLによって作成されたDBレコードを "MyThing"していて、ステータスは外部キーフィールドですか? – Christoph