0

テーブル A とテーブル Bがあります。
テーブル B には、名前と ID の 2 つの列が含まれています。テーブル A には、いくつかの列と、B_ID という B.ID を指す外部キー列が含まれています。

クライアント側には、B_ID を除いて、テーブル A に挿入するすべてのデータがあります。私はB.Nameを持っています。

SQL へのリンクを使用して、Name の値に基づいてテーブル B の ID を取得する必要があります。レコードが存在しない場合は、レコードを挿入して ID (ID 列) を取得する必要があります。

B.ID を取得したので、テーブル A にレコードを挿入する必要があります。

デザイナーでテーブル A と B をインポートしてデータ コンテキスト クラスを作成しましたが、ここで linq to sql ステートメントを記述する方法がわかりません。

4

1 に答える 1

2

データ コンテキスト クラスを作成するときは、まずテーブル A とテーブル B の間の関連付けを設定してください。

以下は、テーブル A への子関係を持つテーブル B からオブジェクトを挿入または更新する方法のアイデアを提供する必要があります。基本的に、オブジェクト B が存在するかどうかを確認します。存在する場合は、その ID を返します。そうでない場合は、オブジェクト A を作成し、それをオブジェクト B に追加してから、オブジェクト B を挿入します。 オブジェクト B を作成することにより、LINQ to SQL は必要な情報をテーブル A と B の両方に挿入します。

DataContext db = new DataContext();

//Build object A
ObjectTableA objA = new objA();
objA.prop1 = ...
objA.prop2 = ...

// Check to see if the object exists in Table B
var query = from b in db.TableB
        where b.Name == name
        select b;

ObjectTableB objb = query.FirstOrDefault();

//if objb does not exist then create and insert a new object B
if (!objb) {
 objB = new ObjectTableB();
 objB.Name = name;

 //add objA
 objB.propA = objA;
 db.TableB.InsertOnSubmit(objB);
 db.SubmitChanges();
}

return objB.ID;
于 2009-11-13T05:06:11.817 に答える