Entity Framework does not create database when using sqlserver express

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, but this 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: 
+4
source share
1 answer

As they say, you do not supply Initial Catalog=__name__ in your connection string.

SqlCe is a local file created for application purposes - multiple databases are not involved. However, SQLEXPRESS can host and offer several databases that provide the imperative for the Initial Catalog .

Add the following to your connectionString :

 ;Initial Catalog=__name__ 

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

+3
source

Source: https://habr.com/ru/post/1433274/


All Articles