Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在我更新实体框架模型时VisualStudio会删除我的类_C#_Visual Studio 2012_Entity Framework 5 - Fatal编程技术网

C# 为什么在我更新实体框架模型时VisualStudio会删除我的类

C# 为什么在我更新实体框架模型时VisualStudio会删除我的类,c#,visual-studio-2012,entity-framework-5,C#,Visual Studio 2012,Entity Framework 5,当我更新我的EF模型(版本5)时,我遇到了一个奇怪的问题。它删除属于该模型的所有类 我的情况是这样的。我更改了两个表的键列,它们引用了我的主表。更新模型并没有对edmx进行这些更改,所以我删除了这三个表(主表和两个查找表),保存了edmx。然后更新模型并将这些表添加回 更新模型后保存模型后,VS删除了此edmx的所有类文件。edmx在所有的表中看起来都很好,只是类已经消失了。然后,我必须恢复上次更改并重试 其中一个有效的方法是手动编辑edmx文件,对受影响的类进行适当的更改,但我不明白为什么我必

当我更新我的EF模型(版本5)时,我遇到了一个奇怪的问题。它删除属于该模型的所有类

我的情况是这样的。我更改了两个表的键列,它们引用了我的主表。更新模型并没有对edmx进行这些更改,所以我删除了这三个表(主表和两个查找表),保存了edmx。然后更新模型并将这些表添加回

更新模型后保存模型后,VS删除了此edmx的所有类文件。edmx在所有的表中看起来都很好,只是类已经消失了。然后,我必须恢复上次更改并重试

其中一个有效的方法是手动编辑edmx文件,对受影响的类进行适当的更改,但我不明白为什么我必须这样做

有什么想法吗


谢谢

您可以尝试以下方法之一:

1) 右键单击Visual Studio中解决方案资源管理器中的“.edmx”文件,然后选择菜单项“运行自定义工具”

2) 在解决方案资源管理器标题栏的正下方,您可以看到一个带有工具提示“转换所有模板”的按钮。点击它。它应该在“YourEdmxFileName.tt”文件下更新您的模型

3) 在Visual Studio“构建”菜单下,选择“转换所有T4模板”


4) 找到各个T4模板文件(*.tt),右键单击它们并选择“运行自定义工具”。

我也遇到过同样的情况。我有一个带有字符串值的表,但我想将其更改为外键,以便将重复出现的字符串值存储在单独的表中。因此,我创建了一个新表,将字符串列类型更改为不可为null的int,并添加了一个外键。当我更新模型时,它将所有实体类标记为已删除。。。不好笑

我还看到出现了一些错误,表明EF没有将列类型从string更改为int

上面提到的解决方案(自定义工具和转换所有模板)对我不起作用

对我来说,解决方案是首先在模型中手动将列类型从string更改为int,然后更新模型,这样就不会出现更多问题


作为记录:这发生在Visual Studio 2010的EF 4中。

为了解决此问题,我将所有表定义文件从模型所在的目录中移出。然后我告诉团队资源管理器恢复删除。它将文件重新添加到我的目录中,我可以继续操作。

一种方法是在删除然后重新添加一个表以使EDMX获取对外键(FK)列的更改后发生这种情况

发生这种情况是因为与其他表的关系没有刷新

根据此答案,要手动修复此问题,请按“仅生成”筛选错误列表,然后在EDMX编辑器中手动解决任何生成错误。注意关系的多样性

或者,使用版本控制还原整个EDMX更改,并使用以下方法重新启动:


与仅删除和重新添加包含已更改FK列的表不同,请删除并重新添加与已更改FK列具有任何关系的所有表。

确保没有任何命名约定为33;。 如果有,EF将失败并重新写入所有类


更改变量名p_u对我有帮助。

我也遇到了类似的问题

Im使用VS2013、EF6并连接到ORACLE 11G(数据库优先)

我添加了一个表,该表具有另一个表的外键。出于某种原因,这两个表中的外键类型不同


更新外键类型解决了我的问题。

这已经有很长一段时间了,但最终我发现我的edmx文件中有一些我没有看到的错误,这导致无法生成poco类文件。

我最终在“Build”菜单下找到了“Transform All T4 Templates”(转换所有T4模板),但它无法重建我遇到问题的edmx。最后,我恢复了代码并手动编辑了文件。我也有同样的问题。。非常愚蠢的问题。。有时,当我在将“不可为null”之类的内容更改为“可为null”后从数据库刷新时,会随机发生这种情况。这发生在我使用Visual Studio 2013和Entity Framework 6.0.0.0版(运行时版本为v4.0.30319)时。我刚刚添加了两个存储过程,没有改变模型。这个问题在过去的另一次发生在我身上,我没有注意到导致它的模型的变化。我已经使用这项技术2年多了@beastieboy,我在Run Custom Tool函数下没有找到任何内容,也没有找到您提到的按钮。我还添加了外键关系。我没有使用tfs,我使用的是subversion。请确保您的列名与数据库中的列名大小写相同是,在我的例子中,一个关系的多重性导致类的重建失败,并导致从*.tt文件中删除所有类。