次のようなマッピングテーブルがあります。
Article_to_Categories
記事 ID カテゴリ ID
linq2sql を使用してこのテーブルに挿入するにはどうすればよいですか?
次のようなマッピングテーブルがあります。
Article_to_Categories
記事 ID カテゴリ ID
linq2sql を使用してこのテーブルに挿入するにはどうすればよいですか?
Article テーブルと Category テーブルに対応する行が存在する場合、これは標準の挿入と変わらないはずです。
一方、それらのテーブルが空の場合は、SubmitChanges を実行する前にそれらのテーブルに行を挿入する必要があります。
Linq-to-Sql が優先順位を管理します。
全体として、単純に Article_to_Categories テーブルに行を挿入して、何が起こるかを確認することをお勧めします。
編集: Linq-to-Sql で行を挿入する方法がわからない場合は、Web 上の例を検討してください。
私の経験では、このような関連付けテーブルにレコードを挿入する際に同様の問題が発生しました。私にとってうまくいくのは、外部キーの関係を尊重し、外部キー ID だけでなくオブジェクトを追加することです。
たとえば、これは私にとってはうまくいきませんでした:
var newRec = new Article_To_Categories
{
Article_ID = 1,
Category_ID = 2
};
DataContext.Article_To_Categories.InsertOnSubmit(newRec);
DataContext.SubmitChanges();
私のために働いたのはこれでした:
var newRec = new Article_To_Categories
{
Article = DataContext.Articles.Where(a => a.Article_ID == 1).SingleOrDefault(),
Category = DataContext.Articles.Where(a => a.Category_ID == 2).SingleOrDefault()
};
DataContext.Article_To_Categories.InsertOnSubmit(newRec);
DataContext.SubmitChanges();
私の調査に基づいて推測できる限り、ID ではなくオブジェクトを追加すると、結果の Article_To_Categories オブジェクトは関連レコードの内容で正しく更新されます。更新プロセスの一部として、関連するレコードを再挿入してはならないという通知があります。新しいレコードを ID で更新するだけでは、LINQ-to-SQL が Article テーブルと Category テーブルからレコードを自動的に取得するとは思えません。オブジェクトまたはデータベース。