2016-10-19 48 views
1

我想创建一个数据库与实体框架代码优先的环境。 数据库中的表是身份表。codefirst数据库没有创建

问题在于SQL Server的数据库创建。当我运行应用程序时,没有创建数据库。

但是,我能找到的物理发现这里在这个位置 -

C:\Users\user\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS\HWAPI.mdf 

所以每当我做添加任何表或改变结构,那么所有的变化都上述地点发生的,并认为这是不使用master数据库。

在我的本地SQL服务器中没有创建数据库。

看一看我的代码 -

StartUp.cs

public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      HttpConfiguration config = new HttpConfiguration(); 
      ConfigureOAuth(app); 
      config.DependencyResolver = new NinjectResolver(NinjectWebCommon.CreateKernel()); 
      WebApiConfig.Register(config); 
      app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 
      app.UseWebApi(config); 
     } 


     public void ConfigureOAuth(IAppBuilder app) 
     { 
      app.CreatePerOwinContext(OwinAuthDbContext.Create); 
      app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 
      app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); 
      OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
      { 
       AllowInsecureHttp = true, 
       TokenEndpointPath = new PathString("/token"), 
       AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), 
       Provider = new AuthorizationServerProvider() 
      }; 
     } 
    } 

还有就是背景 -

public class OwinAuthDbContext : IdentityDbContext<ApplicationUser>, IDisposable 
    { 
     public OwinAuthDbContext() 
      : base("DefaultConnection", throwIfV1Schema: false) 
     { 
      Database.SetInitializer<OwinAuthDbContext>(null); 
     } 

     public static OwinAuthDbContext Create() 
     { 
      return new OwinAuthDbContext(); 
     } 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
      modelBuilder.Entity<IdentityUser>().ToTable("AspNetUsers"); 
      modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles"); 
      modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims"); 
      modelBuilder.Entity<IdentityUserLogin>().ToTable("AspNetUserLogins"); 
     } 

     protected override void Dispose(bool disposing) 
     { 
      base.Dispose(disposing); 
     } 
    } 

的web.config

<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=HWAPI;Integrated Security=SSPI;Connect Timeout=30;User Instance=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

</configuration> 

请帮助,让我知道是否需要额外的信息。

+1

要使用本地SQL服务器,您需要将DefaultConnection字符串更改为指向您的本地服务器。现在它使用SQL Express。 –

回答

0

谢谢大家对把他们的投入。

事实证明,我需要为现有数据库设置凭据。在为数据库设置证书安全性之后,它就起作用了。

前 -

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=HWAPI;Integrated Security=SSPI;Connect Timeout=30;User Instance=True" 
     providerName="System.Data.SqlClient" /> 

后 -

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=HWAPI;User ID=sa;[email protected]" providerName="System.Data.SqlClient"/> 

这解决了我的问题,我能SQLEXPRESS内连接到数据库。

1

您的问题是与连接字符串。您需要尝试如下所示。

如果您需要使用本地主机然后

<connectionStrings> 
<add name="DefaultConnection" connectionString="Server=localhost; Database=HWAPI;Trusted_Connection=True;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

如果您需要使用的LocalDB,则:

<connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\HWAPI.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
相关问题