我有一个使用多对多关系的 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$$