44

我正在使用 .Net4.5 在 VS2012 中创建一个控制台项目。之后,我将“添加”、“新项目”添加到项目中,然后选择“EF 5.x DbContext Generator”。然后,几秒钟后,“错误列表”选项卡中会出现以下错误消息:

错误 1 ​​运行转换:请用您要从中生成的 .edmx 文件的实际名称覆盖替换标记“$edmxInputFile$”。C:\Projects\Tests\ConsoleAppEF5\ConsoleAppEF5\Model1.tt`

我怎样才能解决这个问题 ?

我错过了什么?

4

4 回答 4

52

您应该首先创建 edmx 模型以自动从中生成 POCO。您可以通过菜单添加它(添加新项 -> ADO.NET 实体数据模型)。创建模型后,您可以使用 DbContext 生成器。将 $edmxInputFile$ 替换为您的 edmx 文件的名称,然后保存您正在编辑的文件(尽管 VS 2012 应该会自动执行此操作)。

于 2013-05-17T14:35:23.793 回答
45

在另一种情况下,这显然是一个已知的错误:http ://web.archive.org/web/20131203074519/http://connect.microsoft.com/VisualStudio/feedback/details/498723/ado-net-entityobject-生成器错误列表错误

因此,如果您添加了一个 DbContext 生成器,然后将其删除并出现此错误,请关闭并重新打开该项目。为我解决了。

于 2014-11-01T11:13:08.367 回答
12

就我而言,我无意中添加了EF Db Context Generator而不是Entity Framework. 总计PEBKAC,但我将其发布在这里,因为我确信我不会是唯一的。

我注意到文件扩展名是TT因为这是一个文本模板,而不是EDMX我想要的。

如果您要添加实体,请ADO.NET Entity Data Model 不要添加 EF X.x DbContext Generator

于 2016-04-07T18:35:29.900 回答
2

就我而言,我决定要摆脱 EF 5.x DbContext Generator。当我选择添加它时出现此错误,但在考虑好之后删除了“Model1.Context.tt”和“Model1.tt”。对我来说不幸的是,我没有意识到这不是我必须做的全部。当我进行另一个“构建”时,我得到了 OP 的错误。

我的下一步:我转到 Model1.tt,将其清除$edmxInputFile$并保留为空字符串,然后单击以构建项目。这给了我一个 UnauthorizedException 错误(这很好,我不想让它修改任何东西,无论如何)。我只是想让它摆脱原来的错误。

接下来,我四处摸索,发现我的项目的“.csproj”文件被修改为:

<ItemGroup>
    <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
</ItemGroup>

现在,我认为这个 GUID 不会在所有错误情况下都相同,甚至在任何人添加 EF 5.x DbContext 生成器时都不相同。但是,如果您的 .csproj 文件(注意:这与您的 .csproj.user 文件不同)已更改(希望它在源代码控制中并且您可以告诉这一点),您应该能够弄清楚如何。我删除了这个部分,做了一个“构建”,并摆脱了我的错误。

如果它不在源代码控制中,您始终可以创建一个虚拟项目并将您的 .csproj 文件与该项目的文件进行比较,并通过取出 .csproj 上的任何额外内容并进行“构建”(保存记事本的东西,如果它不能清除你的错误,就把它们放回去)。我知道这是一种很好的方法,但至少您不会浪费时间重做整个解决方案。

于 2014-09-17T02:27:28.840 回答