【问题标题】:Code generated using the T4 templates for Database First and Model First development may not work correctly if used in Code First mode [duplicate]如果在 Code First 模式下使用,使用 T4 模板生成的用于 Database First 和 Model First 开发的代码可能无法正常工作 [重复]
【发布时间】:2013-12-20 11:54:01
【问题描述】:

我在我的 asp.net MVC 4 应用程序中使用实体框架。我有一个 edmx 文件。我正在尝试使用此 EF 模型中的实体来填充这样的视图模型:

using (var context = new VehiclesContext())
            {               

                IEnumerable<SearchedVehicles> vehicles = context.Vehicles.Select(x => new SearchedVehicles
                {

                      Year = x.Year,
                      Make = x.Make,
                      Model = x.Model,
                      Mileage = x.Mileage,
                      VIN = x.VIN
                });

                return View(vehicles);
            }      

Vehicles 是 edmx 中的实体,其中 SearchedVehicles 是视图模型,但我得到了这个例外:

Code generated using the T4 templates for Database First and Model First development may not work correctly if used in Code First mode. To continue using Database First or Model First ensure that the Entity Framework connection string is specified in the config file of executing application. To use these classes, that were generated from Database First or Model First, with Code First add any additional configuration using attributes or the DbModelBuilder API and then remove the code that throws this exception.

在这一行:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

【问题讨论】:

    标签: c# asp.net-mvc entity-framework asp.net-mvc-4


    【解决方案1】:

    这是每个设计。您已经从数据库创建了一个模型,这表明您的代码不应该创建数据库。

    您收到错误消息是因为它没有找到数据库并因此尝试创建它。

    要解决这个问题,您需要检查您的连接字符串以确保它可以找到您要连接的数据库。如果你真的想创建数据库,你应该先去寻找代码。这意味着要么删除“抛出新异常”行并继续使用模型(这意味着您不能再从数据库更新模型,因为它会重新插入异常行),或者您可以对数据库进行逆向工程以编写代码-第一个模型。

    请参阅 http://msdn.microsoft.com/en-us/data/jj593170.aspx 了解逆向工程技巧。

    【讨论】:

    • 我在 app.config 文件中看不到任何连接字符串(edmx 在类库项目中)我应该在 app.config 或使用此 edmx 的 web.config 中添加连接字符串吗?另外,当我创建edmx时,为什么没有在app.config中创建连接字符串
    • web.config 是您的网络应用程序使用的。但奇怪的是它没有为你生成连接字符串……
    • 如果您使用模型优先(从数据库生成的模型)并通过附加构造函数指定显式连接字符串,请确保您使用正确的连接字符串样式,即通过here .
    【解决方案2】:

    我遇到了同样的错误“使用 T4 模板生成的代码...”。我的问题与上述不同。我的数据库表架构已更改。因此,刷新后,我通过将其打开为 xml 来编辑 edmx(rt 单击并说打开方式...并选择 xml)。修复 xml 中的所有错误后,当我运行应用程序时,出现上述错误。因此,下次我撤消 TFS 中的所有内容并继续从 Edmx 图表页面删除和添加有问题的表。这样做,有助于解决上述错误。还学到了,永远不要在 xml 模式下编辑 edmx 文件。

    快乐编码。

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。
    • @ForceMagic,来这里的 99% 的人都会简单地用谷歌搜索该错误消息。他们甚至可能没有读过这个问题。其中许多人将遇到与 user2308925 相同的问题。
    • @ForceMagic 是的,这个网站有很多规则。这是最糟糕的事情之一。
    • @user1172763 这是可以管理此站点的唯一方法,这里的新人通常的反应是将其用作论坛,但这不是它的工作方式。但是一旦你习惯了它,你会发现它实际上更快更容易找到答案,因为它们就在它们应该在的地方:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多