使用外键在c#中定义两个表

使用外键在c#中定义两个表,c#,mysql,C#,Mysql,我想做两张表:团队和项目 我想在这两者之间建立一个1:n的关系。 这是我的代码: //Creare tabela项目 public void CreareTabelaProjects() { string query = "CREATE TABLE IF NOT EXISTS Projects" + "(" + "id_project MEDIUMINT PRIMARY KEY AUTO_INCREMENT," + "name VARCHAR(30)," +

我想做两张表:团队和项目 我想在这两者之间建立一个1:n的关系。 这是我的代码: //Creare tabela项目

    public void CreareTabelaProjects() {
        string query = "CREATE TABLE IF NOT EXISTS Projects" + "(" + "id_project MEDIUMINT PRIMARY KEY AUTO_INCREMENT," + "name VARCHAR(30)," +
            "description VARCHAR(30)," + "FOREIGN KEY (team_id) REFERENCES Teams(team_id)" + ");";
        if (this.OpenConnection() == true) {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.ExecuteNonQuery();
            this.CloseConnection();
        }
    }

   //Creare tabela Teams

    public void CreareTabelaTeams() {
        string query = "CREATE TABLE IF NOT EXISTS Teams" + "(" + "team_id INT AUTO_INCREMENT PRIMARY KEY," + "name VARCHAR(30)" + ");";
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.ExecuteNonQuery();
            this.CloseConnection();
        }

    }
当我运行此操作时,出现了一个错误:
表中不存在键列“团队id”。应用程序仅创建团队表。需要帮忙吗?谢谢

在第一个表之前创建第二个表

这是对项目表的正确查询

 string query = "CREATE TABLE IF NOT EXISTS Projects" + "(" + "project_id INT AUTO_INCREMENT PRIMARY KEY," + "team_id INT,"+"name VARCHAR(30)," +
            "description VARCHAR(30)," + "FOREIGN KEY (team_id) REFERENCES Teams(team_id)" + ");";

无论如何,非常感谢

我正在创建Teams firstprivate void UserForm_Load(对象发送者,事件参数e){{{u dbConnect.CreareTabelateeams();_dbConnect.CreareTabelaProjects()}创建约束时需要存在被引用的表。另一种方法是创建没有约束的表,然后在单独的查询中更改表以添加约束,这将更易于维护。我认为这就是问题字符串query=“create TABLE IF NOT EXISTS Projects”+(“+”project_id MEDIUMINT PRIMARY KEY AUTO_INCREMENT)、“+”name VARCHAR(30),“+“description VARCHAR(30),“+”外键(项目id)引用团队(团队id)”+”;“我用Project_id更改了外键中的team_id。现在它显示:错误150。无法创建项目tableproject_id为mediumint和team_id为int确保两者具有相同的数据类型有什么区别吗?顺便说一句,这个问题说明了为什么不应该使用字符串连接来创建SQL语句。为什么不创建SQL脚本文件并使用不管怎样,还是在服务器上执行它?或者只是读取它的内容并将它们作为单个命令调用execute?区别在于,此查询实际上在项目表中创建了密钥team_id,而原始查询尝试在team_id上定义外键,而team_id未在项目中定义