实体框架EDMX修改已删除

时间:2011-06-06 01:54:51

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

我按照这里的指示:

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

支持映射到使用CROSS APPLY UDF的视图(基本上EF无法确定PK,所以当我尝试将其添加到我的模型时它会将其注释掉)。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

编辑:

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