我有一个使用多对多关系的mysql数据库。我的架构如下所示:
我有一个表“关系”,它可以完成两者之间的映射。它有两列: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$$