c# - MySQL 与 EntityFramework Core - 复合外键
问题描述
我有两张桌子Project
和ProjectMedia
. 它们的定义如下:
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_ID
,LANG
并为它们创建了一个复合外键以将它们引用到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”键。
我应该怎么办?
解决方案
推荐阅读
- ruby-on-rails - ROR:如何从视图获取数据到控制器
- javascript - 从二进制转换为 64 位浮点数
- javascript - 搜索栏过滤
- python - 在 Google Colab 中找不到 Sympy Geometry attibutte
- flutter - 自定义页面转换后文本消失
- elasticsearch - Elasticsearch 重新索引 API - 无法重新索引大量文档
- c# - Lambda 和数学运算
- reactjs - 如何重构所有子功能以仅制作一个?
- pytorch - 为 iOS 导出时 Python 和 LibTorch C++ 之间的输出不一致
- java - 全新的编码和非常困惑为什么我会收到以下错误