多対多の関係を使用する 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$$