如何正确删除和重新添加实体数据模型
Posted
技术标签:
【中文标题】如何正确删除和重新添加实体数据模型【英文标题】:How to properly delete and re-add Entity Data Model 【发布时间】:2011-06-04 19:08:45 【问题描述】:这里是实体框架的新手。使用 VS 2010 和 SQL Server 2008 express DB。
我在添加新表后刷新实体数据模型时遇到问题。所以,我按照我在这里找到的建议删除并重新生成模型。
我进入实体数据模型向导的“选择您的数据连接”部分,并选中“将 Web.config 中的实体连接设置保存为:”。但是,我现有的名称附加了一个 1。例如,MyDatabaseEntities 现在是 MyDatabaseEntities1。当然,我不希望附加“1”。我终止了 Web.config 中现有的连接字符串,并在我的解决方案中删除了对该名称的所有引用。然而,当我尝试继续时,出现以下错误:
“'MyDatabaseEntites' 与应用程序设置中的现有属性名称冲突。请选择其他名称”
我在解决方案的任何地方都找不到对该名称的引用。我可以取消选中该选项,它将继续,但它仍然不会在数据库中添加两个表。接下来,我完全关闭了一切,重新启动,然后再次尝试。这次我没有收到上面的错误,但是我的三个新表中有两个仍然没有被添加到 edmx 模型中。
任何想法都值得赞赏。此外,即使在 VS2010/.NET 4 中,这似乎仍然存在相当大的问题。帮助恢复我的信心......我现在想放弃 Entity Framework。根据我目前的经验以及此处发布的其他一些问题,我觉得我将花费更多时间来研究 Entity Framework 的陌生性,而不是编写有用的代码。
更新:我找到了解决方案。设计器不显示错误。您必须查看本机 XML(edmx 文件)才能看到错误。见这里:ADO.NET Entity Framework: Update Wizard will not add tables
【问题讨论】:
只是评论“'MyDatabaseEntites'与应用程序设置中的现有属性名称冲突。请选择不同的名称”:似乎VS在所有.config文件中查找整个解决方案名称,而不仅仅是属于要添加数据模型的项目的名称。因此,您必须从解决方案中的所有 .config 文件中删除该设置。 ADO.NET Entity Framework: Update Wizard will not add tables的可能重复 从 Web 配置文件中删除所有现有的连接字符串并构建应用程序。现在您可以使用现有的属性名称。 【参考方案1】:该错误是由“App.Config”文件中设置的剩余连接字符串引起的(请参阅解决方案资源管理器),它位于本节中: “connectionStrings”(用尖括号括起来)
从那里删除它。
【讨论】:
我删除了我的连接字符串,但仍然收到错误消息。不得不重启VS 我在 VS15 中遇到了这个问题,但是我的 web.config 中没有连接字符串,我也没有 app.config。【参考方案2】:-
如果您开发 Web 应用,请重新启动
IIS
。
删除EntityDataModel
连接后重新启动 Visual Studio
来自 web.config 或 app.config 的字符串行
添加新实体Data Model
并将其重命名为旧名称,
【讨论】:
【参考方案3】:我不知道你的问题的具体答案,但我想我可以推荐一种方法来解决这个冲突。
我通常将我的 EF 工作分解为一个单独的库。如果我正在研究 Cyberdyne.Terminator,我会创建一个名为 Cyberdyne.Terminator.Data 的 EF 类库。这样一来,如果您想删除模型并重新开始,一切都与您的依赖文件分开,尤其是您的 web.config。
这些都可能无法修复丢失的表格。我看到发生这种情况的一件事是,如果我添加一个表,然后将其删除。它不会再次出现在“添加表”对话框中(您必须重命名它才能显示)。但我认为这在 EF 4.0 中已修复。不知道。如果问题仍然存在,您可以尝试重命名表,重新添加它,然后在出现时将其重命名。
可以肯定的是,EF 确实令人头疼。我唯一可以告诉你的是,我通常不得不克服这些头痛,了解问题,并且再也不会被它们困扰。如果你受不了 EF,你也可以看看 NHibernate——我对此也有非常强烈的印象。
【讨论】:
感谢克里斯的回复。这是对单独库的一个很好的建议。我确实在这里找到了我的问题的解决方案:***.com/questions/543971/… 在发布之前我应该再搜索一下。 哇...太疯狂了。这真的应该是一个弹出消息,而不是隐藏在 XML 中。【参考方案4】:仔细检查您的连接字符串,并继续向右滚动。大多数情况下,当我遇到这种情况时,Visual Studio 会在另一个后面附加一个连接字符串。我已经这样做了几次,想知道我的应用程序配置在哪里(不,没有应用程序配置,只有 mvc 中的 Web 配置),所以对话框有点混乱。果然,这个连接字符串很可能直接隐藏在另一个字符串后面!
【讨论】:
如此真实,同样的事情也发生在我身上。甚至无法通过搜索解决方案找到【参考方案5】:按一下
Ctrl+F
键并在下拉列表中选择“EntireSolution/CurrentProject”,然后按 Enter。生成此名称的任何位置都会显示给您。 我进入 web.config 文件。所以从那里删除生成的完整连接线。并重新添加。那么希望您不要再收到此消息。谢谢..
【讨论】:
没有帮助。我尝试搜索整个解决方案。【参考方案6】:实际上这令人沮丧,因为您试图在 app.config 中查看如果有另一个字符串并且您只看到 1 个字符串,实际上 VS 所做的有时是在同一行中附加第二个字符串。看下面这张图
看起来有 2 个 ConnectionString 吗? (实际上是)
现在,看这张照片:
您也可以按 Ctrl+ED 来格式化配置文件,看看是否还有第二个字符串隐藏在某个地方。希望这会对某人有所帮助。
【讨论】:
【参考方案7】:我很抱歉我的英语 但解决方案很简单。 你必须删除 ado.net 然后,转到 app.conf 并删除连接字符串, 调试你的项目,最后通过 ado.net 添加新数据库
TO ADD ADO.NET
RIGHT CLICK ON YOUR PROJECT NAME, THEN, ADD NEW ITEM, DATA AND SEARCH ADO.NET...
I hope help you, have good day!
angelsantacruzm
【讨论】:
以上是关于如何正确删除和重新添加实体数据模型的主要内容,如果未能解决你的问题,请参考以下文章