2012-04-10 5 views
1

ASP.NET 4.0 C#、Linq to SQL:新しい行が作成されたら、別のフィールドにID値を書き戻す必要があります。同じ行。同じテーブルの別のフィールドにLinqにSQL ID値を書き込む必要がある

(行見つからないか、または変更されません)私はこれを試してみましたが、それはうまくいきませんでした:

//newRow created and fields populated here 
dc.Table.InsertOnSubmit(newRow); 
dc.SubmitChanges(); 
newRow.Field = newRow.PriKey; 
dc.SubmitChanges(); 

私はまた、新しい変数と更新が、同じエラーに行を読んでみました:

//newRow created and fields populated here 
dc.Table.InsertOnSubmit(newRow); 
dc.SubmitChanges(); 
row2 = (from r in dc.Table where r.PriKey = newRow.PriKey select r).FirstOrDefault(); 
row2.Field = newRow.PriKey; 
dc.SubmitChanges(); 

私は自分のSQLコマンドを作成して実行することでこれを簡単に行うことができますが、簡単な方法はありますか?

編集:これがトランザクションでラップされているということは違いがありますか?

using (CMSDataContext dc = new CMSDataContext(Config.ConnString)) 
{ 
    dc.Connection.Open(); 
    dc.Transaction = dc.Connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted); 
+0

ちょうどあなたがローカル変数に 'newRow.PriKey'を割り当てるしようとしているの楽しみのために(たとえばint型、短い、など)、次に' newRow.Field = localvariable' – peroija

+0

peroija:はい、私はこれを試しましたが、助けにはなりませんでした。最後に、私はこの問題を適切に修正することをあきらめ、データを修正するためのクエリを実行しました。 – johna

答えて

-1

てみ順序によって、リスト

dc.Table.InsertOnSubmit(newRow); 
dc.SubmitChanges(); 
row2 = (from r in dc.Table order by r.PriKey desecnding select r).FirstOrDefault(); 
row2.Field = row2.PriKey; 
dc.SubmitChanges(); 
+0

私はこれをまったく行うことを勧めません。 2人で 'newRow'を追加すると、間違った値になることがあります。 – peroija

+0

質問は更新について質問します。コメントをする前に質問を読む –

+0

私のコメントは3行目の' row2 =(dcのrからです。 r.PriKey desecnding select r).FirstOrDefault(); 'この行では、送信されたばかりのnewRowから来たものであるかどうかにかかわらず、最初に表示される値を取得しています。 OPは、新たに作成された行のPK値を同じ行に戻すように要求し、あなたの応答が必ずしもそうするわけではありません。 – peroija

1

から一番上の行を選択するこれはLINQ2SQLの制限であるように思わない、LINQPadで下記実行すると、正常に動作するようです。デバッガでコードをステップ実行しようとしましたか?または、他の問題をチェックするためにあなたの実際のコードを投稿できますか?

create table data 
(
    ID int not null identity primary key, 
    Value varchar(16) not null, 
    PKStore int null 
) 

var newRow = new Data{Value = "MyVal"}; 
Data.InsertOnSubmit(newRow); 
SubmitChanges(); 

newRow.PKStore = newRow.ID; 
SubmitChanges(); 

Data.Dump(); //LINQPad Method 

出力

enter image description here

関連する問題