Как обновить многие многие объекты, связанные с Entity Framework 1 и MySQL? - PullRequest
2 голосов
/ 04 сентября 2010

У меня такая проблема. Я использую EF1 с VS2008 SP1 и MySQL с MySQL Connector / Net 6.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 ]

2 голосов
/ 29 августа 2012

У меня была та же ошибка, потому что у меня не было первичного ключа в средней таблице.

Это исправило это для меня:

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;
1 голос
/ 10 сентября 2010

Похоже на ошибку в Connector / NET.Мы сделали тест, этот код преуспел в dotConnect для MySQL .

0 голосов
/ 07 сентября 2016

Добавление первичного ключа в таблицу «многие ко многим».

Так что, если ваш стол

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....
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...