インストール中にAppDataに書き込まずに展開する必要があるWindowsプログラムがありますが、そこにSQLCEデータベースが必要です。
だから私は2つのアイデアを持っています:それをプログラムにデプロイしてから最初の起動時にコピーするか、または私が望むものはすべてをコーディングします。
だから私はこのスレッドがVSDBCMDなしでVS2010データベースプロジェクトを展開しているのを見つけましたか?これは基本的に悪い考えだと言っていますが、回答者がすべてを知っているとは思わないので、より良い考えがあります。私はそのコードの一部をどこかで見つけました:
string connStr = "Data Source = FooDatabase.sdf; Password = SomePassword";
if (File.Exists("FooDatabase.sdf"))
File.Delete("FooDatabase.sdf");
SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
using (var conn = new SqlCeConnection(connStr)) {
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "CREATE TABLE FooTable(col1 int, col2 ntext)";
cmd.ExecuteNonQuery();
私が求めているのは、これがどのPCでも機能するかどうか、そしてEntityFrameworkを使用するためにコードを実行する必要があるかどうかです。私は次のようなことを考えていました
public class FooContext : System.Data.Entity.DbContext
{
public FooContext() : base("Data Source = FooDatabase.sdf; Password = SomePassword") { }
public DbSet<FooTable> FooTables { get; set; }
}
public class FooTable
{
public int col1 { get; set; }
public string col2 { get; set; }
}
しかし、私はそれを機能させることができません。
接続文字列だけが間違っている可能性がありますが、それを使用しないようにするにはどうすればよいですか、または正しい接続文字列はどのように見えますか?
plzを助けますか?