【问题标题】:Entity Framework EDMX Modifications Are Deleted实体框架 EDMX 修改被删除
【发布时间】:2011-09-08 23:37:52
【问题描述】:

我按照这里的指示进行操作:

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/0ce70e04-0ba0-4819-8898-87243203adb9/

支持映射到在其中使用 CROSS APPLY UDF 的视图(基本上 EF 无法确定 PK,因此当我尝试将其添加到我的模型时它会将其删除)。

按照链接中的说明进行操作后,我能够成功映射到视图并对其进行查询....但是,一旦我尝试使用 Update Model from Database 获取对架构的新更改,它清除我根据链接中的说明所做的修改(我在向导屏幕中看到它说它要删除这些实体)。

请告诉我它不应该以这种方式工作......

【问题讨论】:

    标签: .net entity-framework entity-framework-4


    【解决方案1】:

    Visual Studio 中内置的“从数据库更新模型”向导正是这样做的;它会替换模型的整个 SSDL 部分,覆盖您所做的任何自定义。

    有第三方工具允许您对模型进行选择性更新,保留您可能对模型的其他部分所做的自定义,并允许您选择要跨层传播的更改。我的公司为 Visual Studio 制作了一个加载项,该加载项将该功能(以及许多其他有用的功能)添加到 EF4 设计器中。这是一段介绍一些基本同步功能的介绍视频:http://huagati.blogspot.com/2010/07/introducing-model-comparer-for-entity.html

    【讨论】:

      【解决方案2】:

      简单的解决方法是为所有手动定义的实体单独使用 EDMX。从数据库更新总是删除 EDMX 的 SSDL 部分(定义视图的地方)。

      编辑:

      另一种方法是修改您的视图代码以包含不可为空(应该是唯一的,或者您可能会遇到其他问题)列 - 它应该被自动推断为键。无论如何,强烈建议密钥的唯一性。

      【讨论】:

      • 谢谢...如果这些视图是在单独的 edmx 中定义的,我如何才能将关联添加到这些视图中?
      • 你不能这样做。
      • 好的,这样怎么修改视图?
      • 视图是 UDF 的结果
      • 通常 EF 将键推断为所有不可为空、非计算、非二进制列的集合。
      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2016-05-13
      相关资源
      最近更新 更多