MyProject\App_Data\Cos.mdf
でデータベースの場所を設定しようとしましたApp.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>
でProgram.cs
私は書いた:
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();
}
表示されたパスは次のとおりです(間違えていないことを示すために貼り付けました):
しかし、パッケージ マネージャー コンソールを true にenable-migrations
変更すると、次のように入力するとエラーが発生します。AutomaticMigrations
update-database
Cannot attach the file 'C:\Users\s8359_000\Documents\Visual Studio 2013\Projects\Projekt5 — kopia\Projekt5\bin\Debug\Cos.mdf' as database 'Cos'.
Debug
.NET がディレクトリにデータベースを作成しようとするのはなぜですか?! 私はこのトピックについて StackOverflow で 15 のテーマを調べましたが、誰もがうまくいかない回答を複製しているようです。
SRUTZKYの回答後に編集 はい、そうです、エラーがあります。あなたの答えの後にいくつかの組み合わせを試しましたが、残念ながらどれもうまくいきませんでした。
<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>
そしてメイン
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();
}
次に、コンソールに入ります:
Migrations
ディレクトリとを削除した後enable-migrations
、自動移行をtrueにすると、次のupdate-database
ようになります。
PM> update-database '-Verbose' フラグを指定して、ターゲット データベースに適用されている SQL ステートメントを表示します。System.Data.SqlClient.SqlException (0x80131904): ファイルのアクティブ化エラーが発生しました。物理ファイル名「\baza.mdf」が間違っている可能性があります。追加のエラーを診断して修正し、操作を再試行してください。データベースの作成に失敗しました。リストされたいくつかのファイル名を作成できませんでした。関連するエラーを確認してください。System.Data.SqlClient.SqlConnection.OnError で (SqlException 例外、ブール値の breakConnection、アクション
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction) で System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (String methodName、Boolean async、Int32 timeout、Boolean asyncWrite) での dataReady) 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, DbCommandInterceptionContext
1 c) での System.Data.Entity.Infrastructure.Interception .InternalDispatcher1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func
3 オペレーション、TInterceptionContext インターセプションコンテキスト、アクション3 executing, Action
3 実行) System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand コマンド、DbCommandInterceptionContextinterceptionContext) で System.Data.Entity.SqlServer.SqlProviderServices.<>c__DisplayClass1a.b__19(DbConnection conn) で System.Data.Entity .SqlServer.SqlProviderServices.<>c__DisplayClass33.b__32() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.b__0() at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func1 operation) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) at System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action
1 act) System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection で (DbConnection sqlConnection、アクション1 act) at System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable
1 commandTimeout、DbConnection sqlConnection、文字列 createDatabaseScript) System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase (DbConnection 接続、Nullable) で1 commandTimeout, StoreItemCollection storeItemCollection) at System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable
System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection 接続) で System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase() で 1 commandTimeout、StoreItemCollection (storeItemCollection)、System.Data.Entity.Migrations.DbMigrator で.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) at System.Data.Entity.Migrations.Infrastructure .MigratorBase.Update(String targetMigration) で System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run() で System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) で System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
System.Data.Entity.Migrations.Design.ToolingFacade.Run (BaseRunner ランナー) で System.Data.Entity.Migrations.Design.ToolingFacade.Update (文字列 targetMigration、ブール値の力) で System.Data.Entity.Migrations.UpdateDatabaseCommand で。 <>c__DisplayClass2.<.ctor>b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(アクション コマンド) ClientConnectionId:23ca49c1-4797-4bc3-8f16-f34fd77f2cbe ファイルのアクティブ化エラーが発生しました。物理ファイル名「\baza.mdf」が間違っている可能性があります。追加のエラーを診断して修正し、操作を再試行してください。データベースの作成に失敗しました。リストされたいくつかのファイル名を作成できませんでした。関連するエラーを確認してください。午後>