Visual Studioデータベースダイアグラムエディタでデータベース設計を作成し、そこからすべてのテーブルを作成しました。また、Linq to SQLクラスを作成し、テーブルを追加して各テーブルのオブジェクトを作成しました。私はデータベースに新しいエントリを挿入しようとするときに問題に遭遇しています。例えばLinqでSQLにリレーショナルデータを挿入すると、重複エントリエラーが発生する
:
のは、私は2つのテーブル、アーティストやアルバムを持っているとしましょう。 1人のアーティストが複数のアルバム(1対多)を持つことができます。アルバムにはArtistIDフィールドがあります。このフィールドはArtistテーブルのArtistID PKまでのFKです。それらのIDは、データベースによって自動的に生成されるGUIDです。
は今、私のコードで私は(myAlbumと呼ばれる)の新しいアルバムのオブジェクトを作成し、データベース(myArtist)に既にあるアーティストにそのアーティストのオブジェクトを設定します。
私はこのような何か場合:
DatabaseDataContext context = new DatabaseDataContext();
context.Albums.InsertOnSubmit(myAlbum);
context.SubmitChanges();
を私は言ってSqlExceptionがなってしまう:「PRIMARY KEY制約の違反 『をPK_Artist』オブジェクトに重複するキーを挿入できません 『dbo.Artist』 。ステートメントが終了しました。
私は、データベースにすでにアーティストにmyAlbum.Artist比較する場合、LINQのは、それらが等しいと言うので、それは彼らが同じオブジェクトである知っています。
はどうすればLINQのは、新しいアルバムのオブジェクトを挿入して、再度のアーティストを挿入しようとせずに、既にデータベース内の既存のアーティストにそれをリンクするのですか?
pk_Artist列のデータ型とは何ですか? –
またGUIDです。 – nguyer
アーティストを設定した場所にコードを投稿できますか? – Paddy