質問

OK、エンティティのプライマリキーが「自動生成値」に設定されている場合、プライマリキーでクエリを実行するときにのみこの問題を確認しましたが、これがない場合、どのように挿入できますか?これがnoob linq2sqlの場合は申し訳ありませんが、作業を開始したばかりです。

どのようにこのオプションをオフにしてLinq to Sqlを使用し、dbでpkを処理するのですか?私は割り当てなければならないpkを取得するために毎回質問しなければならないのが嫌です...

誰かが私を助けてくれることを願っています、私のプロジェクトの1つでlinq to sqlを完全に使用することはできません、何をすべきか本当にわかりません...ここに例があり、この行はStackOverflow例外をスローします。

MyDataContext dc = new MyDataContext(ConnStr);
var obj = dc.MyDataTable.AsQueryable().SingleOrDefault(a => a.pkID == 4);

-その2行目はStackOverflow例外をスローします。

同じデータコンテキストを使用した別の例

var o = dc.MyDataTable.Take(1); <-- works fine
var abc = o.ToArray();  <-- unable to evaluate, debugger stops

私が試すことができるアイデアはありますか?同じソリューションの別のプロジェクトでlinq to sqlを使用しても問題ないようです。

-更新- この特定のエンティティ「MyDataTable」のpkが「Auto Generated Value」として設定されていることを忘れていました-この原因に設定しているので、自動インクリメントを実行しているsqlがあり、これがID列です。

役に立ちましたか?

解決

pkIDはどのように実装されますか?何らかの形で再帰的である可能性はありますか?

他のヒント

Take(1)の動作は、実際には何も実行しないため(データが反復されるまで延期されます)、私を驚かせません。

これは興味深い問題です。特に、SingleOrDefault(x=>x.ID == id)には実際に異なる処理内部-これを主キー検索として認識し、IDマネージャーを最初にチェックします。

編集 既成概念として、.Where(x=>x.ID == id).SingleOrDefault()を試してください-バグ(以前のリンク)に従って、これはIDルックアップトリックを使用しません4.0が出荷されるまで。

疑問に思うことから始めます:

  • ID getter / setterに奇妙な点はありますか(コードを追加しましたか?)
    • このタイプの部分クラスで何かを実行しましたか?
  • それは継承チェーンの一部ですか?
    • そして、もしそうなら、親型の部分的なクラスを使用しましたか?
  • 爆発したときにコールスタックウィンドウに何か表示されますか?

それはLINQ 4.0で修正されたバグでした

http:// damieng .com / blog / 2009/06/01 / linq-to-sql-changes-in-net-40

  

クエリの安定性を含むには、自己参照IQueryableが検出されるようになり、スタックオーバーフローが発生しなくなりました

問題を解決するための.NET 3.5: 'Auto Generated Value' = Trueを使用する場合、 'Delay Loaded'をFalseに設定する必要があります。そうしないと、再帰エラーが発生します。

データテーブルが大きすぎます!

編集。 MyDataTableは本当にDataTableですか?または、実際にはLINQ to SQL Table <!> lt; ... <!> gt; ?その場合、AsQueryable()を削除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top