我一直在使用LocalDB.mdf文件来构建我的应用程序,但现在需要在生产中使用它并创建一个可安装的应用程序。
经过研究,似乎存储此类文件的最佳位置是/Appdata/Local/
文件夹。
如果它不存在或已被删除,我打算在那里创建一个新的LocalDB.mdf文件。
我的App资源中有一个预先制作的LocalDB.mdf文件,我想在第一次运行时将其复制到此/Appdata/Local/
文件夹中,但我看到Access被拒绝错误。
我可以为该文件夹创建一个空白文件。
以下是代码:
string appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string dvAppDataFolder = appDataFolder + @"\MyApp";
AppDomain.CurrentDomain.SetData("DataDirectory", dvAppDataFolder);
if (!Directory.Exists(dvAppDataFolder))
Directory.CreateDirectory(dvAppDataFolder);
if (!File.Exists(dvAppDataFolder + "LocalDB.mdf"))
{
File.WriteAllBytes(dvAppDataFolder, LokiServer.Properties.Resources.newDB);
}
另外,我是否正确地采取了这种方式?
答案 0 :(得分:2)
这一行
if (!File.Exists(dvAppDataFolder + "LocalDB.mdf"))
可能是错的。缺少反斜杠,最好使用Path.Combine
而不是字符串连接。
最后,您要写入文件而不是文件夹
string fileName = Path.Combine(dvAppDataFolder,"LocalDB.mdf");
if (!File.Exists(fileName))
{
File.WriteAllBytes(fileName, LokiServer.Properties.Resources.newDB);
}
你做得对吗?这取决于。如果您的应用程序数据应该针对目标计算机的每个用户保持独立,那么您是对的,但如果您希望数据库可供该计算机的所有用户使用,请使用
string appDataFolder = Environment.GetFolderPath
(Environment.SpecialFolder.CommonApplicationData);