我有一个 Windows 程序,应该在安装过程中不写入 AppData 来部署它,但我想要一个 Sql CE 数据库。
所以我有两个想法:将它部署到程序中,然后在第一次启动时复制,或者,我更喜欢,对所有内容进行编码。
所以我发现这个 Thread Deploying VS2010 Database Projects without VSDBCMD? 这基本上告诉我这是一个坏主意,但我不认为回答者是无所不知的,我有一个更好的主意。我在某处发现了那段代码:
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();
从这里开始:以编程方式创建 SQLCE 数据库
我要问的是,这是否适用于任何 PC 以及我必须做的代码才能使用实体框架。我在想类似的东西
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; }
}
但我只是不让它工作。
可能只有连接字符串是错误的,但我如何避免使用它或正确的看起来如何?
请帮忙?