我在 MySQL 中构建了一个数据库,并尝试使用 Entity Framework 将其映射出来,但是每当我尝试向 EF 上下文中添加大约 20 个表时,我就会开始遇到“GenerateSSDLException”。
尝试从数据库更新时出现“Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine+GenerateSSDLException”类型的异常。异常消息是:'执行命令定义时发生错误。有关详细信息,请参阅内部异常。
命令执行期间遇到致命错误。
超时已过。在操作完成之前超时时间已过或服务器没有响应。
受影响的表没有什么特别之处,也不是同一个表,只是在添加了特定(非特定)数量的表之后,如果没有“超时过期”错误,则无法再更新上下文。有时只剩下一张桌子,有时是三张;结果非常难以预测。此外,在错误之前可以添加的表数量的差异向我表明,问题可能在于为更新上下文而生成的查询的大小,该上下文既包括现有的表定义,也包括新的表正在添加到它。从本质上讲,SQL 查询变得太大,并且由于某种原因无法执行。
如果我使用EdmGen2生成模型,它可以正常工作,但生成的 EDMX 文件无法在 Visual Studio 中更新而不会产生上述异常。
鉴于 EdmGen2 工作正常,这个问题的根源很可能在于 Visual Studio 中的工具,但我希望也许其他人可以就如何解决这个非常独特的问题提供一些建议,因为看起来我不是唯一经历它的人。
一位同事提出的一个建议是维护两个单独的 EBMX 文件,并带有一些表交叉,但在我看来,这似乎是一个非常丑陋的解决方案。我想这就是我尝试使用“新技术”的结果。:(