2

这应该是一个很常见的场景。这是数据库表。

CREATE TABLE `table1` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `table2` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `table1_table2` (
  `ID1` int(11) NOT NULL,
  `ID2` int(11) NOT NULL,
  KEY `fk1_idx` (`ID1`),
  KEY `fk2_idx` (`ID2`),
  CONSTRAINT `fk1` FOREIGN KEY (`ID1`) REFERENCES `table1` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk2` FOREIGN KEY (`ID2`) REFERENCES `table2` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后这是我的 Program.cs:

static void Main(string[] args)
    {
        using (testEntities ctx = new testEntities())
        {
            table1 t1 = new table1
            {
                Name = "t1",
                table2 = new List<table2>()
            };

            table2 t2 = new table2
            {
                Name = "t2"
            };

            t1.table2.Add(t2);
            ctx.table1.Add(t1);

            ctx.SaveChanges();
        }
    }

还有恼人的错误截图: 在此处输入图像描述

所以,伙计们,帮帮我。我应该怎么办?在我开始在 EF 场景中使用 .NET 的 mysql 连接器的第一天,我感觉自己陷入了一个陷阱。

4

1 回答 1

0

阅读错误,您似乎必须在执行多对多关系之前添加 t2 。

         table1 t1 = new table1
        {
            Name = "t1",
            table2 = new List<table2>()
        };

        table2 t2 = new table2
        {
            Name = "t2"
        };

        t1.table2.Add(t2);
        ctx.table2.Add(t2); //Here it is... try that
        ctx.table1.Add(t1);
于 2013-08-23T12:12:29.457 回答