代码之家  ›  专栏  ›  技术社区  ›  Chris Becke

EF核心的数据从多到多

  •  1
  • Chris Becke  · 技术社区  · 6 年前

    我有一个SQLite数据库,我正试图与EF核心数据库首先使用。 它有一个用户表和一个用户可以属于的组表,还有一个映射表,因为用户可以属于多个组。

    -- 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_用户标识主键,并且不生成模型,并且用户和组模型都不包含对另一个(预期)的任何引用。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tim Biegeleisen    6 年前

    尝试将显式主键添加到 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)
    );
    

    地图组用户 group_id user_id ,理想情况下每个组合只出现一次。

    group . 我不知道这是否给了你一个错误,但我已经 "group" 用双引号来转义。