5

linq to sqlの使用を開始したばかりで、自動インクリメントフィールドを含むレコードの挿入で問題が発生しました。

linqによって定義された会社オブジェクトの新しいインスタンスを作成しました。自動インクリメントフィールド'companyID'を0に初期化しました。InsertOnSubmit()は次のinvalidOperationExceptionで失敗します。

メンバー'companyID'の自動同期指定が正しくありません

列属性IsDbGeneratedは、companyIDプロパティに対してtrueです。SQLServer2000を使用しています。

編集:自動同期はOnIsertに設定されています。dataypeはTSQLではBigIntであり、C#では長いです。

このエラーが発生している理由とその解決方法を知っている人はいますか?

ありがとう

4

6 に答える 6

9

答えが見つかりました。それは主キーと関係がありました。linqデザイナーでは、主キーが適切に設定されていました。データベースでは、関連するフィールドが主キーとして設定されていませんでした。データベースのキーを修正しましたが、これで問題は解決しました。

于 2008-12-11T10:30:48.573 に答える
3

データ型は何ですか?int?(TSQLとC#の両方で?)

どのような自動同期設定がありますか?主キーの場合、「OnInsert」である必要があります

于 2008-12-11T09:59:42.770 に答える
2

同じ問題。DBに主キーを設定し、AutoSyncプロパティを"OnInsert"DBMLに変更すると役立ちました

于 2010-10-22T19:18:58.710 に答える
1

そのクラス/テーブルの「Auto-Sync」プロパティの値は何ですか?

自分の側をチェックしたところ、「OnInsert」に設定されています。また、「自動生成値」はtrueに設定されています。

于 2008-12-11T09:59:12.427 に答える
1

挿入時オプションは、データベースに値を挿入する場合にのみ設定されます。データベースのセキュリティ オプションに問題がない場合は、常にデータベースで [なし] オプションを使用してください。

于 2011-06-18T20:13:14.120 に答える
0

可能であれば、データベースを削除して再作成してください。私の場合は、テーブルに主キーを追加するのを忘れたときでした。次に、最初の挿入がデータベースに入った後、主キーが見つからないという例外がありました。dbml デザイナーで手動で適用しましたが、最初の ID が既に取得されており、「自動同期が正しくありません」という例外が発生しました。

于 2013-11-06T14:03:17.753 に答える