Entity Framework not creating database when using sqlserver express

The Entity Framework will not create my database when using SQL Express but it works fine if I use SQL Server CE.

I have been trying to figure this out for a couple of days now, but it is probably my inexperience with ASP.NET and MVC.

 ConnectionStrings:
<connectionStrings>
    <!--
    <add name="CRM"
         connectionString="data source=|DataDirectory|CRM.sdf"
         providerName="System.Data.SqlServerCe.4.0" />-->

    <add name="CRM"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\CRM.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />

    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

StackTrace:

System.InvalidOperationException was caught
  Message=Unable to complete operation. The supplied SqlConnection does not specify an initial catalog.
  Source=System.Data.Entity
  StackTrace:
       at System.Data.SqlClient.SqlProviderServices.GetDatabaseName(SqlConnection sqlConnection)
       at System.Data.SqlClient.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection)
       at System.Data.Objects.ObjectContext.CreateDatabase()
       at System.Data.Entity.Internal.DatabaseOperations.Create(ObjectContext objectContext)
       at System.Data.Entity.Database.Create()
       at System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context)
       at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass5.<PerformDatabaseInitialization>b__3()
       at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
       at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
       at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
       at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
       at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
       at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
       at System.Data.Entity.Internal.InternalContext.Initialize()
       at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
       at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
       at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
       at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
       at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
       at System.Data.Entity.DbSet`1.Add(TEntity entity)
       at MvcApplication1.Controllers.CustomerController.Create(Customer customer) in C:\Users\hlcole\Documents\RegProjects\MvcApplication1\MvcApplication1\Controllers\CustomerController.cs:line 55
  InnerException: 

Answers


Just as it says, you're not supplying an Initial Catalog=__name__ in your connection string.

SqlCe is a local file spun up for the purposes of the application--there are no multiple databases involved. However, SQLEXPRESS can host and offer multiple databases making supplying the Initial Catalog imperative.

Add the following to your connectionString:

;Initial Catalog=__name__

Where __name__ is the name of the database you want to use.


Need Your Help

Canvas-lms update rails 2.3.5 to 3.2.12

ruby-on-rails ruby-on-rails-2 rails-3-upgrade

I am going to work on the open source Canvas-lms. Its using rails 2.3.5 but i am familar with rails 3.2.12.

When to include/copy third-party code, rather than reference/link it?

.net open-source reference

I am working on an .NET library project, containing a bunch of interfaces which can be consumed by a service, which I am also creating. Users of the service will provide implementations of the inte...