首页 文章

如何在使用mysql实体框架时插入多对多场景?

提问于
浏览
1

这应该是一种非常常见的情况 . 这是数据库表 .

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();
        }
    }

而烦人的错误截图:
enter image description here

所以伙计们,帮助我 . 我该怎么办?我想在EF场景中开始使用.NET的mysql连接器的第一天进入陷阱 .

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);
    

相关问题