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

标签 mysql visual-studio entity-framework many-to-many

我也遇到这样的问题。我将 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

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

最佳答案

我遇到了同样的错误,因为我在中间表中没有主键。

这为我解决了这个问题:

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;

关于mysql - 如何使用Entity Framework 1和MySQL更新多对多相关对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643735/

相关文章:

mysql - 内存数据库和磁盘内存数据库的区别

php - 未定义索引 : on login (php)

sql - .Net Core Entity Framework Linq Fluent API 查询不会创建/执行在数据库上运行的正确 SQL 查询

c# - 在 Entity Framework 中使用 DbContext 运行异步调用

c# - LINQ 检查一个列表是否包含另一个列表中的任何项目 mysql 语法错误

PHP/MySQL : Getting Multiple Columns With the Same Name in Join Query Without Aliases?

mysql - 为什么 LIMIT 子句对于 JSON_ARRAYAGG 函数失败?

.net - 如何在 Visual Studio 中选择 .NET 4.5.2 作为目标框架

visual-studio - 微软假货 "Assembly not supported"

git - jenkins 与 Visual Studio 团队服务的集成