我在设置 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 获取数据库连接字符串,但它产生错误(元数据不支持)
之后,我没有使用连接字符串,而是尝试了其他几种方法,例如:
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,但我在它自己的 db 上看不到任何更改。
然后我意识到它可能是复制到输出目录属性。我试过“不要复制”,它在找不到 bin\database1.sdf 的地方产生了错误消息。我已将其设置回“如果较新则复制”。
但是当我使用数据库的完整路径 C:.....................\Project\database1.sdf 时,它能够更新数据库。有没有办法做到这一点,而不是提供一个完整的路径?