首页 > 解决方案 > MySQL 与 EntityFramework Core - 复合外键

问题描述

我有两张桌子ProjectProjectMedia. 它们的定义如下:

CREATE TABLE `project` (
  `ID` int(11) NOT NULL,
  `LANG` char(2) NOT NULL,
  `NAME` varchar(64) CHARACTER SET utf8 DEFAULT NULL,
  `DESCS` varchar(2048) CHARACTER SET utf8 DEFAULT NULL,
  `SHORT_DESC` varchar(512) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`ID`,`LANG`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ID并且LANG是表中的复合主键Project

ProjectMedia表定义:

CREATE TABLE `project_media` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `PATH` varchar(1024) DEFAULT NULL,
  `TYPE` char(1) DEFAULT NULL,
  `IS_LOCAL_FILE` bit(1) DEFAULT NULL,
  `PROJECT_ID` int(11) NOT NULL,
  `LANG` char(2) NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `PROJECT_MEDIA_PROJECT_PROJECT_ID_LANG_idx` (`PROJECT_ID`,`LANG`),
  CONSTRAINT `PROJECT_MEDIA_PROJECT_PROJECT_ID_LANG` FOREIGN KEY (`PROJECT_ID`, `LANG`) REFERENCES `project` (`ID`, `LANG`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我在 ProjectMedia 中添加了两列PROJECT_IDLANG并为它们创建了一个复合外键以将它们引用到project表中

但是当我执行如下脚手架命令时:我收到此消息

dotnet ef dbcontext scaffold "server=localhost;database=mydb;user=root;" "MySql.Data.EntityFrameworkCore" --output-dir "Persistence" --context "MyDbContext" --force

无法搭建外键“mydb.project_media(PROJECT_ID)”。在主体实体类型“项目”中找不到“ID”键。无法搭建外键“mydb.project_media(LANG)”。在主体实体类型“项目”中找不到“LANG”键。

我应该怎么办?

标签: c#mysql.net-coreentity-framework-core

解决方案


推荐阅读