SDF データベースのパスの設定に問題があります。
私の元のつながり
<add name="Model1Container" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\Database1.sdf"" providerName="System.Data.EntityClient" /></connectionStrings>
次に、ConfigurationManager を使用して db 接続文字列を取得しようとしましたが、エラーが発生しました (メタデータはサポートされていません)。
その後、接続文字列を使用する代わりに、次のような他の方法をいくつか試しました。
string StartupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
string datalogicFilePath = Path.Combine(StartupPath, "Database1.sdf");
string connectionString = string.Format("DataSource={0}", datalogicFilePath);
これはURI形式の例外をスローします
@"Data Source = |DataDirectory|\Database1.sdf"
これは ExecuteNonQuery に対して 1 を返すことができますが、データベース自体に変更は見られません。
その後、出力ディレクトリのプロパティにコピーする可能性があることに気付きました。「コピーしない」を試みたところ、bin\database1.sdf が見つからないというエラー メッセージが表示されました。「新しい場合はコピー」に戻しました。
しかし、データベースCへのフルパスを使用していたとき:................\Project\database1.sdf、dbを更新できました。フルパスを提供するのではなく、それを行う方法はありますか?