代码之家  ›  专栏  ›  技术社区  ›  KoU_warch

MVC 3创建一个新的数据库,而不是使用指定的数据库

  •  3
  • KoU_warch  · 技术社区  · 12 年前

    我正在使用Mvc3和MvcScaffoldingNuGet创建一个新的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。

    使现代化

    我遵循数据库优先的方法 this example

    我的一切都很顺利,但当应用程序启动时,它会创建一个新表,而不是使用我指定的表。

    唯一的区别是没有 databaseEntities 在我的项目中 projectContext 对此我不能做第8步

    更新2

    我有点放弃了这一点,将遵循代码优先的方法,因为这只需要作为一名飞行员花费很多时间。

    这是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; }
      }
    }
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   Community PPrice    7 年前

    我终于发现了问题。我发现了类似的问题 here 它为我指明了正确的方向。

    我不得不补充一点:

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

    ErrorReportingSystemContext.cs 文件在下 /Models 文件夹

    完成!

        2
  •  1
  •   Dave Alperovich    12 年前

    似乎您正在使用代码优先实体框架。这篇帖子可能会在那个论坛上获得最好的曝光率。EnginesTracingEntities是一个EF连接字符串。

    首先处理代码的一个大问题是,每次更改POCO时都会丢弃数据库并重新创建。

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

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