Cómo definir DataDirectory para ConnectionString en la aplicación de consola para trabajar con EntityFramework Code First Migrations

Intento establecer la ubicaciónMyProject\App_Data\Cos.mdf para la base de datos enApp.config:

 <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\Cos.mdf;Initial Catalog=Cos;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

EnProgram.cs Escribí:

 static void Main(string[] args) {

        string relative = @"..\..\App_Data\Cos.mdf";
        string absolute = Path.GetFullPath(relative);

        AppDomain.CurrentDomain.SetData("DataDirectory", absolute); 
        Console.WriteLine(absolute);
        Console.ReadKey();
 }

La ruta que se muestra es (la pego para mostrar que no cometí un error):

pero luego cuando escribo en Package Manager Consoleenable-migrations cambioAutomaticMigrations a verdadero, luego escribaupdate-database Me sale el error:

Cannot attach the file 'C:\Users\s8359_000\Documents\Visual Studio 2013\Projects\Projekt5 — kopia\Projekt5\bin\Debug\Cos.mdf' as database 'Cos'.

¿Por qué .NET intenta crear mi base de datos enDebug ¡¿directorio?! Revisé 15 temas en StackOverflow sobre este tema y parece que todos simplemente duplican las respuestas que no funcionan.

EDITAR DESPUÉS DE LA RESPUESTA DE SRUTZKY Sí, tienes razón, hay un error. Intenté algunas combinaciones más después de su respuesta, desafortunadamente ninguna funcionó.

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\baza.mdf;Initial Catalog=baza;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

y el principal

  static void Main(string[] args) {

        Console.WriteLine("BEFORE:" + AppDomain.CurrentDomain.GetData("DataDirectory"));
        string relative = @"..\..\App_Data\Cos.mdf";
        string absolute = Path.GetFullPath(relative);
        absolute = Path.GetDirectoryName(@absolute);
        AppDomain.CurrentDomain.SetData("DataDirectory", @absolute);
        Console.WriteLine(@absolute);
        Console.WriteLine(AppDomain.CurrentDomain.GetData("DataDirectory"));
        Console.ReadKey();
}

entonces me meto en la consola:

y después de borrarMigrations directorio yenable-migrations, migraciones automáticas a verdadero,update-database Yo obtengo:

PM> update-database Especifique el indicador '-Verbose' para ver las instrucciones SQL que se aplican a la base de datos de destino. System.Data.SqlClient.SqlException (0x80131904): se produjo un error de activación de archivo. El nombre del archivo físico '\ baza.mdf' puede ser incorrecto. Diagnostique y corrija errores adicionales y vuelva a intentar la operación. CREATE DATABASE falló. Algunos de los nombres de archivos en la lista no se pudieron crear. Verificar errores relacionados. en System.Data.SqlClient.SqlConnection.OnError (excepción SqlException, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) en System.Data.SqlClient.TdsParser.TryRun (runBehavior RunBehavior, SqlCommand cmdHandler, SqlDataReader corriente de datos, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean y dataReady) en System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (String methodName, Boolean async, Boolean asyncWrite) en System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand t, DbCommandInterceptionContext1 c) en System.Data.Entity.Infrastructure.Interception.InternalDispatcher1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func3 operación, TInterceptionContext interceptionContext, Acción3 executing, Action3 ejecutado) en System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery (comando DbCommand, DbCommandInterceptionContext interceptionContext) en System.Data.Entity.SqlServer.SqlProviderServices. <> C__DisplayClass1a.b.Data (System). .SqlServer.SqlProviderServices. <> C__DisplayClass33.b__32 () en System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy. <> C__DisplayClass1.b__0 () en System.Data.Entity.SqlServer.Exf.1 operation) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) at System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action1 acto) en System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection (DbConnection sqlConnection, Action1 act) at System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) en System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase (conexión DbConnection, Nullable1 commandTimeout, StoreItemCollection storeItemCollection) at System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable1 commandTimeout, StoreItemCollection storeItemCollection) en System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase () en System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create (conexión DbConnection) en System.Mate.Entity.Mig.Entity .EnsureDatabaseExists (Action mustSucceedToKeepDatabase) en System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists (Action mustSucceedToKeepDatabase) en System.Data.Entity.Migrations.DbMigrator.Update.Et.Actualización (String. .MigratorBase.Update (String targetMigration) en System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run () en System.AppDomain.DoCallBack (CrossAppDomainDelegate callBackDelegate) en System.AppDomain.DoCallBackDeleDeBallBackDeck
en System.Data.Entity.Migrations.Design.ToolingFacade.Run (corredor de BaseRunner) en System.Data.Entity.Migrations.Design.ToolingFacade.Update (String targetMigration, Boolean force) en System.Data.Entity.Migrations.UpdateDatabaseCommand. <> c__DisplayClass2. <. ctor> b__0 () en System.Data.Entity.Migrations.MigrationsDomainCommand.Execute (comando de acción) ClientConnectionId: 23ca49c1-4797-4bc3-8f16-f34fd77f2cbe Se produjo un error de activación del archivo. El nombre del archivo físico '\ baza.mdf' puede ser incorrecto. Diagnostique y corrija errores adicionales y vuelva a intentar la operación. CREATE DATABASE falló. Algunos de los nombres de archivos en la lista no se pudieron crear. Verificar errores relacionados. PM>

Respuestas a la pregunta(3)

Su respuesta a la pregunta