1

我有一个使用多对多关系的 mysql 数据库。我的架构如下所示:

在此处输入图像描述

我有一个表“关系”,可以在两者之间进行映射。它有 2 列:layout_ID 和 graph_ID,看起来像这样:

在此处输入图像描述

我想要做的是删除并在关系表中输入而不删除对象本身。

在我的代码中,我使用 DataServiceCollection 跟踪这两个表,如下所示:

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