【发布时间】:2010-08-23 12:23:58
【问题描述】:
我将实体框架与 MySQL 服务器一起使用,因为我希望能够再次对我的 MySQL 数据库进行良好而简单的 LINQ 查询。 我有一个非常简单的问题,我很沮丧,因为我不敢相信 EF 犯了这么可怕的错误。
为了简化,我有父类和子类,我想在一个事务中执行两个插入。
演示:我有 A、B、C 和 D。 A 是 B 和 C 的父母,B 和 C 是 D 的父母(必须是这样)。
我执行以下操作:
B b = new B() { B_ID = 1 };
A.Bs.Add(b);
C.Ds.Add(new D() { B_ID = b.B_ID } );
我这样做是因为所有这些实际上都发生在 C 类中。 为什么我会收到 UpdateException(“...”中的实体参与“BD”关系。找到了 0 个相关的“B”。需要 1 个“B”)?因为当我省略最后一个命令(插入 D,B 的子级)时,它可以正常工作,而当我随后发出插入(即在新事务中)时,它也可以正常工作。
难道是 EF 盲目地以随机顺序插入元素,但自己注意到它不可能吗?还是我以完全错误的方式处理问题?
EF 版本:我有 .NET FX 3.5 SP1,所以据我所知是版本 1。
更新: 非常抱歉,将错误追踪到我犯的错误,所以现在错误不会发生在 EF 级别(我上面说的例外),但实际上是一个 INSERT因为 chidl 元素被发送到数据库,我可以在日志中看到它。所以问题依然存在,只是异常不同(外键约束失败)。
感谢您的帮助, 迈克尔
(编辑回答 cmets)
【问题讨论】:
-
正如我现在发布的,我认为它是第 1 版。
标签: c# sql mysql entity-framework