3

我正在使用 Mvc3 和 MvcScaffolding NuGet 创建一个新的 MVC 3 试点应用程序,一切运行顺利,直到我想使用我已经拥有的数据库。该应用程序不断创建具有以下格式的数据库:

projectname.Models.projectnameContext

我被困在这里,我的 connectionStrings 是:

<connectionStrings>
   <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> 
   <add name="EnginesTrackingEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=WARCHLAPPY\SQLEXPRESS;initial catalog=[EnginesTracking];integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings>

其中指定我的数据库是EnginesTracking。

更新

我正在遵循此示例中的数据库优先方法。

我的一切工作正常,但是当应用程序启动时,它会创建一个新表,而不是使用我指定的表。

唯一的区别是databaseEntities我的项目中没有,而是projectContext我无法执行第 8 步

更新2

我有点放弃了,将遵循 codeFirst 方法,因为这需要很多时间才能成为一名飞行员。

这是 Model1.context.cs:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ErrorReportingSystem.Models{
  using System;
  using System.Data.Entity;
  using System.Data.Entity.Infrastructure;

  public partial class EnginesTrackingEntities : DbContext
  {
    public EnginesTrackingEntities()
        : base("name=EnginesTrackingEntities")
    {
    }

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

    public DbSet<Engine_Part> Engine_Part { get; set; }
    public DbSet<Engines> Engines { get; set; }
    public DbSet<Error> Error { get; set; }
    public DbSet<Has_error> Has_error { get; set; }
    public DbSet<Locations> Locations { get; set; }
    public DbSet<Operators> Operators { get; set; }
    public DbSet<sysdiagrams> sysdiagrams { get; set; }
  }
}
4

2 回答 2

1

好像您正在使用 Code First Entity Framework。该帖子可能会在该论坛中获得最佳曝光率。EnginesTrackingEntities 是一个 EF 连接字符串。

处理代码优先的一个大问题是数据库删除并随着对 POCO 的每次更改而重新创建。

我非常喜欢数据库优先的方法,因为它不那么难部署(一点也不难),而且你指向的地方很清楚。代码优先的优点是能够优雅地设计和装饰您的 POCO。

由于缺乏信息,我没有完全回答您的问题,而是帮助指导您。有了更多关于您的部署和实体的信息,我可能会提供更多帮助。

于 2012-09-05T22:29:06.873 回答
1

我终于找到了问题所在。我在这里发现了一个类似的问题,它为我指明了正确的方向。

我不得不补充:

    public ErrorReportingSystemContext() : base("name=EnginesTrackingEntities") { }

ErrorReportingSystemContext.cs文件/Models夹下的文件。

完毕!

于 2012-09-10T19:44:03.627 回答