使用DataServiceCollection删除多对多关系中的关系

时间:2013-01-24 18:22:38

标签: c# mysql entity-framework ado.net

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

enter image description here

我有一个表“关系”,它可以完成两者之间的映射。它有两列:layout_ID和graph_ID,如下所示:

enter image description here

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

在我的代码中,我使用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$$

0 个答案:

没有答案