1

多対多の関係を使用する mysql データベースがあります。私のスキーマは次のようになります。

ここに画像の説明を入力

2つの間のマッピングを行うテーブル「関係」があります。layout_ID と graph_ID の 2 つの列があり、次のようになります。

ここに画像の説明を入力

私がやりたいことは、オブジェクト自体を削除せずに、関係テーブルを削除してエントリすることです。

私のコードでは、次のように DataServiceCollection を使用して 2 つのテーブルを追跡します。

var LayoutCollection = new DataServiceCollection<permalinkslayout>();
var GraphsCollection = new DataServiceCollection<permalinksgraphs>();

var Entities = new PermalinksEntities(new Uri("URL HERE"))
            {
                MergeOption = MergeOption.OverwriteChanges
            };

LayoutCollection.Load(Entities.permalinkslayout.Expand("permalinksgraphs"));
GraphsCollection.Load(Entities.permalinksgraphs.Expand("permalinkslayout"));

私がやりたいのは、「レイアウト」を取り、それに関連付けられている「グラフ」を削除することです(グラフオブジェクト自体は削除せずに、他の「レイアウト」と非常によく関連付けることができるため)

やってみました

layout.permalinksgraphs.Clear(); (where layout is of type permalinkslayout)
Entities.SaveChanges();

ただし、データベースから関係が削除されることはありません。(エラーは発生しません。テーブルが更新されないだけです)

私の質問は、「グラフ」オブジェクト自体を削除せずに、「レイアウト」と「グラフ」の間の関係を削除するにはどうすればよいですか?

編集:関係テーブルのDDL:

CREATE TABLE `permalinksrelations` (
  `layout_ID` int(11) NOT NULL,
  `graphs_ID` int(11) NOT NULL,
  PRIMARY KEY (`layout_ID`,`graphs_ID`),
  KEY `FK_layout_ID_idx` (`layout_ID`),
  KEY `FK_graphs_ID_idx` (`graphs_ID`),
  CONSTRAINT `FK_graphs_ID` FOREIGN KEY (`graphs_ID`) REFERENCES `permalinksgraphs`
  (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
   CONSTRAINT `FK_layout_ID` FOREIGN KEY (`layout_ID`) REFERENCES `permalinkslayout`
  (`ID`)   ON DELETE NO ACTIONON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT  CHARSET=latin1$$
4

0 に答える 0