【问题标题】:EF6 Entity Data Model Wizard extension gets error after Update Model From DatabaseEF6 实体数据模型向导扩展在从数据库更新模型后出错
【发布时间】:2015-06-02 16:13:05
【问题描述】:

我有一个实现 IModelGenerationExtension 的自定义实体数据模型扩展。在没有进入特定代码的情况下,我遇到了一种情况,即“模型生成扩展对从数据库生成的模型进行了无效的更改”。从数据库更新我的模型时。我可以使用 Visual Studio 实验实例完全逐步完成我的扩展。表示扩展名修改的 EDMX 文件的 xml 文档是有效的 xml。范围离开我的 OnAfterModelGenerated 方法后发生错误。我假设我做了一些 EF 实体数据模型向导不喜欢的事情。如何确定实际错误是什么?我发现这类事情的信息不容易获得。任何帮助,将不胜感激。提前致谢。

【问题讨论】:

  • 检查你是否修改context.GeneratedDocument而不是context.CurrentDocument。第一个似乎是只读的什么的。
  • 对此也很疯狂!那是因为我重命名了一个与实体同名的 NavigationProperty!

标签: entity-framework entity-framework-6 edmx entity-model


【解决方案1】:

您可以将生成的 .edmx 保存为新文件并在 Visual Studio 中打开它。它会显示它的错误。

【讨论】:

  • 我已经意识到我的问题是我试图咬得比我能咀嚼的更多。我试图重命名实体,因为它不会复数以“s”结尾的实体。我一定是搞错了什么。我开始研究添加跟踪语句来调试我的代码在发生时正在做什么,但却被转移到其他事情上。我将不得不尝试您的建议并回复您。
  • 您应该知道您可以在代码视图的左边距添加断点并通过右键单击解决方案资源管理器中的文件->调试T4模板来调试.tt文件。我也在尝试重命名实体,并且不得不让我自己的类实现IModelTransformExtension。实体也应该在.edmx.diagram 文件中重命名。一个真正的痛苦!我无法理解现在如何在 EF 中没有一个地方可以注入我们的自定义方法来处理 db-first 模型中的实体/属性名称。祝你好运!
  • 我的问题是,当我更改实体名称时,edmx 尚未保存。由于它不再与图表匹配,因此无法保存它存在一些问题。是的,没有简单的方法解决它,所以我只是抛出一个消息框让用户手动重命名它。我仍然使用相同的版本,但我认为这并不容易。
【解决方案2】:

仅当 WizardKind==WizardKind.Generate 时使用 OnAfterModelGenerated 编辑 CurrentDocument。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多