代码之家  ›  专栏  ›  技术社区  ›  Enlightened

如何使用Entity framework 1和MySQL更新多对多相关对象?

  •  2
  • Enlightened  · 技术社区  · 16 年前

    我有这样的问题。我将EF1与vs2008sp1结合使用,MySQL与MySQL Connector/net6.3.4结合使用

    CREATE TABLE IF NOT EXISTS `credential` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
    
    CREATE TABLE IF NOT EXISTS `user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
    
    CREATE TABLE IF NOT EXISTS `user_credential` (
      `user_id` int(11) NOT NULL,
      `credential_id` int(11) NOT NULL,
      KEY `credential_id` (`credential_id`),
      KEY `user_id` (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    ALTER TABLE `user_credential`
      ADD CONSTRAINT `user_credential_ibfk_2` FOREIGN KEY (`credential_id`) REFERENCES    `credential` (`id`) ON DELETE CASCADE,
      ADD CONSTRAINT `user_credential_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE;
    

    当我试图执行下面的代码时,我有一个我无法理解的异常

    var entities = new studyEntities();
    
    var user = new User { Name = "test" };
    var credential = new Credential { Name = "admin" };
    
    entities.AddToCredentialSet(credential);
    entities.AddToUserSet(user);
    
    entities.SaveChanges();
    user.Credentials.Add(credential);
    entities.SaveChanges(); // He I have a strange exception thrown
    
    
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT
      `user_credential`.`credential_id`, 
      `user_credential`.`user_' at line 1
    

    这是什么意思?我怎样才能看到整个查询来寻找其中的问题呢?或者我做错了什么?

    3 回复  |  直到 16 年前
        1
  •  1
  •   Devart    16 年前

    看起来像是连接器/网络中的错误。
    dotConnect fro MySQL .

        2
  •  2
  •   jonsca    13 年前

    这帮我解决了:

    CREATE TABLE IF NOT EXISTS `user_credential` (
      `user_id` int(11) NOT NULL,
      `credential_id` int(11) NOT NULL,
    
      PRIMARY KEY(`user_id`, `credential_id`)
      KEY `user_id` (`user_id`)
    
      CONSTRAINT .... FOREIGN KEY....
      CONSTRAINT .... FOREIGN KEY....
    
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
        3
  •  0
  •   Abhijeet Nagre    10 年前

    如果你的桌子

    CREATE TABLE If Not Exists SubsidiaryMapping
    (   
        CompanyId bigint NOT NULL,
        SubsidiaryId bigint NOT NULL,
    
        -- Add Primary Key composing exisiting keys
        -- Following fixed issue for me
        PRIMARY KEY(CompanyId , SubsidiaryId ), 
    
        CONSTRAINT .... FOREIGN KEY....
        CONSTRAINT .... FOREIGN KEY....
    );