2016-12-13 149 views
0

我在Visual Studio 2015中使用实体框架6数据库优先。 有时,当我修改.edmx图并保存更改时,所有.cs类(用于表格)都从代码生成模型中删除.tt文件,我无法让这些回报。 也适用于从零创建实体数据模型。EF 6数据库优先代码生成项目

有人知道这个问题的原因是什么,最后应该如何解决这个问题?

感谢任何帮助。

我已经修改了我的实体数据模型与此:(不知道这可能是原因或其他)打开yourModel.tt后档 查找

* EF5 Grdiview only Count & ReadOnly /并更换两次出现“ICollection”与“ObservableListSource”(第296和484行)。 使用“ObservableListSource”(第50行)查找并替换第一次出现的“HashSet”。 不要替换稍后在代码中找到的第二次出现的HashSet。/*

+0

您是否尝试重新构建项目?正常的行为是当你重建它应该重新创建类。 – Seminda

+0

我尝试重建并尝试删除.tt文件,然后重新创建这些文件,但问题仍然存在。 也许我应该先从数据库或代码中使用代码? – iolah2

回答

1

您正在使用数据库优先方法并手动修改.edmx,因此该模型无法在db表中找到相应的映射。如果要手动对.edmx进行更改,请尝试使用模型优先方法,或者先尝试更改数据库并稍后更新.edmx。

0

如果没有生成类,则表示edmx文件中存在错误,尝试打开它并验证它,可以通过右键单击edmx文件并单击验证来验证。

至于.tt文件,右键单击并选择“运行自定义工具”,看看代码是否生成或没有。

建议:切换到代码优先:)

+0

我只是修改edmx添加一个新的entitiy,没有PK。 我的老师说我应该给类似实体的父类。 示例NameTitle,语言等 这些只是它们具有ID(NameTitleID,LanguageID)和一个字符串(Description,具有不同的长度)。 当我想和一个具有这2个道具的实体并继承其他人时,在发生这种失败后。 但是它也发生了,当我修改数据库,从数据库刷新并保存edmx。 ObservableListSource可以是这个原因,还是什么? – iolah2

+0

对不起,我发现很难理解你的评论,你不应该手动修改edmx或者更改生成的代码,因为只要代码生成器运行它就会丢失 –