我在设置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的任何变化。
然后我意识到它可能是Copy to Output目录属性。我试过“不要复制”,它产生了错误信息,其中找不到bin \ database1.sdf。我已将其设置为“如果更新则复制”。
但是当我使用数据库C的完整路径时:..................... \ Project \ database1.sdf,它能够更新数据库。有没有可能的方法来做而不是提供完整的路径?
答案 0 :(得分:0)
我遇到了同样的问题并最终解决了 实际上它保存数据但不保存在服务器资源管理器(通常位于应用程序的根文件夹中)中的.sdf中,而是保存在调试文件夹中的.sdf中 当你发布它发布的应用程序时,也会发布一个正常插入数据的根.sdf。 希望我没有迷惑你,它帮助了你。 -Masology
答案 1 :(得分:0)
尝试使用您的本地路径 数据源= C:\ Users \ ABC \ Documents \ Visual Studio 2010 \ Projects \ ABC \ ABC \ Database1.sdf; Password = qwer!234; Persist Security Info = True“