将MySQL存储过程添加到实体框架上下文时出现外键约束错误

将MySQL存储过程添加到实体框架上下文时出现外键约束错误,mysql,entity-framework,Mysql,Entity Framework,我正在尝试让我的应用程序首先使用EntityFramework6数据库与MySQL数据库通信 我试图使用存储过程来创建、更新和删除使用实体框架的每个实体 对于没有外键的表,这很简单。但是,我在尝试添加存储过程时出错(通过右键单击实体设计器界面“从数据库更新模型…”) 错误消息是: 发生“MySql.Data.MySqlClient.MySqlException”类型的异常 尝试从数据库更新时。异常消息是 无法添加或更新子行:外键约束失败 sakila.“电影演员”,约束“fk电影演员”外键 ('

我正在尝试让我的应用程序首先使用EntityFramework6数据库与MySQL数据库通信

我试图使用存储过程来创建、更新和删除使用实体框架的每个实体

对于没有外键的表,这很简单。但是,我在尝试添加存储过程时出错(通过右键单击实体设计器界面“从数据库更新模型…”)

错误消息是:

发生“MySql.Data.MySqlClient.MySqlException”类型的异常 尝试从数据库更新时。异常消息是 无法添加或更新子行:外键约束失败 sakila.“电影演员”,约束“fk电影演员”外键 ('actor id')引用了更新级联上的'actor'('actor id')

我的存储过程如下所示:

DELIMITER $$

CREATE PROCEDURE `p_film_actor_ins` (
    IN paractor_id smallint(5) unsigned,
    IN parfilm_id smallint(5) unsigned,
    IN parlast_update timestamp
)
    MODIFIES SQL DATA
BEGIN

    INSERT INTO film_actor
    (
        actor_id,
        film_id,
        last_update
    )
    VALUES
    (
        paractor_id,
        parfilm_id,
        parlast_update
    );

END$$
DELIMITER ;

现在,公平地说,我在执行存储过程时会出现这样的错误,而我的数据是错误的。但是我在这里要做的就是将它导入到我的模型中。

我看到您的存储过程插入了。我也有同样的问题

  • 右键单击“数据库模型”,然后单击“从数据库更新模型”
  • 仅选择有问题的存储过程
  • 将鼠标悬停在选项“将选定的存储过程和函数导入实体模型””上,并查看它是否也显示“通过实体模型公开选定的存储过程,在返回多个列时为其创建返回类型如果使用存储过程插入/更新/删除实体类型,则取消选中此项
  • 取消选中那个框
  • 在Visual Studio模型浏览器中完成存储过程的设置

  • 此时,我意识到Entity Framework 6似乎不支持原始SQL查询并将代码重写为原始SQL查询。

    很好的调用!这解决了我的问题。必须将鼠标悬停在复选框上才能获得真正需要的信息,这是一种“神秘的肉”。