0

以下に示すように、有効な関係を持つ次のテーブルを取得しました。

 Report
      ------>ReprotDataSource
                --------->SharePointDomain

ここで、次のことを試すと (新しく ReprotDataSource を選択した SharePointDomain にリンクする)、ID を持つ SharePointDomain に参照する代わりに、新しい SharePointDomain レコードが挿入されます (2)

//Create new Object
ReportDataSource rprtDS = new ReportDataSource
{
  Name = rprtDSSelected.Name,
  Parent = rprtDSSelected.Parent,
  CreatedBy = Environment.UserName,
  CreationDate = DateTime.Now,
  Source = rprtDSSelected.Source,
  Type = rprtDSSelected.Type
};

  if (rprtDS.Type == "SP List")
  //here is the issue
  rprtDS.SharePointDomain = selectedSharePointDomain;//its id = 2
  //Add to EntitySet
  TheReport.ReportDataSources.Add(rprtDS);
  TheReport.Save();

自分のIDを(2)に設定すると正常に動作します

説明はありますか。

前もって感謝します。

4

1 に答える 1

1

追加するオブジェクトは、同じデータ コンテキストから取得する必要があります。それ以外の場合は、暗黙的な挿入としてカウントされます。このオブジェクトは別の場所から来たものだと思います。おそらく以前のデータコンテキスト。クエリ間でオブジェクトをキャッシュしている場合、これは注意が必要です。代わりにIDを設定するだけかもしれません... :p

必要に応じて取り外したり取り付けたりするのは楽しいかもしれませんが、おそらくそれだけの価値はありません。

于 2010-12-05T13:50:37.977 に答える