gpt4 book ai didi

sqlite - EF Core多对多数据

转载 作者:行者123 更新时间:2023-12-03 19:17:16 24 4
gpt4 key购买 nike

我有一个SQLite数据库,我首先尝试与EF Core数据库一起使用。
它有一个用户表和一个用户可以属于的组表,并且有一个映射表,因为用户可以属于多个组。

-- holds users
CREATE TABLE IF NOT EXISTS user (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT,
);
-- holds groups users can belong to
CREATE TABLE IF NOT EXISTS group (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT,
);
-- holds user group membership
CREATE TABLE IF NOT EXISTS map_group_user (
group_id INTEGER,
user_id INTEGER,
UNIQUE (group_id,user_id) ON CONFLICT REPLACE,
FOREIGN KEY(group_id) REFERENCES group(_id) ON DELETE CASCADE,
FOREIGN KEY(user_id) REFERENCES user(_id) ON DELETE CASCADE
);


当我进行脚手架安装时,我从 dotnet ef scaffold收到警告,它无法标识map_group_user的主键,并且它不会生成模型,并且User和Group模型都未包含对另一个(预期)的引用。

最佳答案

尝试将显式主键添加到map_group_user桥表中:

CREATE TABLE IF NOT EXISTS map_group_user (
group_id INTEGER,
user_id INTEGER,
UNIQUE (group_id,user_id) ON CONFLICT REPLACE,
FOREIGN KEY(group_id) REFERENCES "group"(_id) ON DELETE CASCADE,
FOREIGN KEY(user_id) REFERENCES user(_id) ON DELETE CASCADE,
PRIMARY KEY (group_id, user_id)
);


map_group_user表的逻辑主键是 group_iduser_id的组合,每个组合最好只出现一次。

顺便说一句,请避免使用保留的SQL关键字(例如 group)命名表和列。我不知道这是否给您一个错误,但是我已将 "group"放在双引号中以进行转义。

关于sqlite - EF Core多对多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51986713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com